Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocos2d iphone Cocos2D 2.0与1.0的行为不同_Cocos2d Iphone - Fatal编程技术网

Cocos2d iphone Cocos2D 2.0与1.0的行为不同

Cocos2d iphone Cocos2D 2.0与1.0的行为不同,cocos2d-iphone,Cocos2d Iphone,我有几个应用程序是用Cocos2D创建的 我正在将其中一些升级到Cocos2D的新版本2.0。我使用的方法是: 我从标准模板创建了一个新的空白项目 我将所有文件移动到新项目 我通常将Helloworld层作为我的初始层。我注意到Cocos2D创建了一个作为初始层的introLayer,我已经删除了它,并像以前一样恢复了加载Helloworld的行为。尽管如此,我注意到了一些事情: Helloworld的init方法中的行为现在有所不同。我注意到,在init方法中,现在报告的方向不正确。即使应用程

我有几个应用程序是用Cocos2D创建的

我正在将其中一些升级到Cocos2D的新版本2.0。我使用的方法是:

  • 我从标准模板创建了一个新的空白项目
  • 我将所有文件移动到新项目
  • 我通常将Helloworld层作为我的初始层。我注意到Cocos2D创建了一个作为初始层的introLayer,我已经删除了它,并像以前一样恢复了加载Helloworld的行为。尽管如此,我注意到了一些事情:

  • Helloworld的init方法中的行为现在有所不同。我注意到,在init方法中,现在报告的方向不正确。即使应用程序只是横向的,它也会将其报告为纵向的。我还注意到,导演好像还没有完全初始化。如果我尝试使用导演的观点,这一点就得到了证实。如果我试图在Helloworld的init方法中使用该视图,则该视图总是无效的
  • 为了解决这个问题,我将所有代码移到Helloworld的oneter方法中。现在,Helloworld和控制器已完全初始化,一切正常

    这种方法适用于我为CoCoS2D1.0升级到2.0的第一个应用程序,但我现在正在从CoCoS2D2.0beta转换到2.0Final的应用程序有些问题

    我现在遇到的问题是Helloworld没有触发任何触摸,是的,我已经准备好了:

    -(void) registerWithTouchDispatcher
    {
        [[[CCDirector sharedDirector] touchDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];
    }
    
    
    - (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
        return YES;
    }
    
    什么可以阻止Helloworld在2.0中检测触摸?如何使Helloworld的init方法的行为与2.0 beta版或1.0版类似

    注意:当Helloworld加载时,从不调用CCTouchStart和registerWithTouchDispatcher


    谢谢。

    轮换问题是一个已知的错误。第一个场景将在纵向模式下初始化,即使应用程序设置为仅在横向模式下。这是因为init发生在app委托更新方向之前。将代码放在onEnter中修复了这个问题,或者简单地加载一个“intro”场景,然后加载实际的第一个场景也修复了这个问题


    触摸问题可能不是CoCoS2D2.0的问题。也许这就像不设置self.isTouchEnabled=YES一样简单。如果未调用registerWithTouchDispatcher方法,则isTouchEnabled未设置为YES,或者您没有在CCLayer类中执行此操作,但可能是在CCScene中执行此操作。

    此问题的解决方案是将[super-Oneter]放在Oneter方法上

    -(void) onEnter {
        [super onEnter];
        self.isTouchEnabled = YES;
    }
    

    缺少这一行会在应用程序上产生各种各样的问题,比如调度器不工作、ccMove的奇怪行为、ccTransition没有触发OneInterTransitiondFinish以及各种各样的问题。

    我现在发现我必须将其放在OneNet:[[CCDirector sharedDirector]touchDispatcher]AddTargetedElegate:自优先级:0燕子接触:是];由于某些原因,在Helloworld中不再自动调用registerWithTouchDispatcher。另一件事是,现在我必须将CCTargetedTouchDelegate放在接口的Helloworld委托声明上。完成此操作后,现在将触发CCTouchStart。现在我要为所有支持触摸的课程做这些。。。这是一个bug吗?是的,我在一个CClayer类上做这个。Helloworld,因为它是由默认模板创建的。我现在发现了很多其他的问题,我可能会一直使用2.0测试版,直到2.0被修复。无论如何,谢谢。