我有几个用 Cocos2D 创建的应用程序。
我正在将其中一些升级到 Cocos2D 的新版本 2.0。我使用的方法是:
- 我从标准模板创建了一个新的空白项目
- 我将所有文件移动到新项目
我通常将层 Helloworld 作为我的初始层。我注意到 Cocos2D 创建了一个 introLayer 作为初始层,我已经删除了它并恢复了加载 Helloworld 的行为。说到这里,我注意到了几点:
- Helloworld 的 init 方法内部的行为现在有所不同。我注意到现在在 init 方法中错误地报告了方向。即使应用程序只是横向,它也会始终将其报告为纵向。我还注意到导演还没有完全初始化。如果我尝试使用导演的观点,这一点得到了证实。如果我尝试在 Helloworld 的 init 方法中使用它,这个视图总是无效的。
为了解决这个问题,我已将所有代码移至 Helloworld 的 onEnter 方法。现在,Helloworld 和 director 已经完全初始化,一切正常。
这种方法适用于我为 Cocos2D 1.0 升级到 2.0 的第一个应用程序,但我现在从 Cocos2D 2.0beta 转换到 2.0 最终版本的应用程序出现了问题。
我现在遇到的问题是 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 时永远不会调用 ccTouchBegan 和 registerWithTouchDispatcher。
谢谢。