【发布时间】:2012-07-31 19:05:58
【问题描述】:
我有几个使用 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 final 的应用程序出现了问题。
我现在遇到的问题是 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。
谢谢。
【问题讨论】:
标签: cocos2d-iphone