我目前正在使用cocos2d构建游戏,并且遇到以下问题:
我有一个MenuScene,用户可以在其中启动游戏。当他这样做时,可以通过以下方式用该级别初始化手势Recognizer:

CCScene *scene = [LevelScene scene];
LevelScene *layer = (LevelScene *) [scene.children objectAtIndex:0];
UIPanGestureRecognizer *gestureRecognizer = [[[UIPanGestureRecognizer alloc] initWithTarget:layer action:@selector(handlePanFrom:)] autorelease];


一切正常,完成关卡后,用户看到gameOverScene并被发送回MenuScene。当我再次开始游戏时,所有动作都可以正常工作(显示动画,显示关卡等),而事实是gestureRecognizer不再能够识别任何触摸。您是否知道为什么会这样或如何调试呢?

谢谢。

最佳答案

手势识别器很可能会保留目标。我遇到了类似的问题,该问题导致作为UIKit类委托的“目标”场景无法释放。即整个场景被泄漏。

由于某些不幸的情况,原始场景的选择器仍被调用,但未处理,因为场景永远锁定在“游戏结束”状态。我的猜测是您正在发生类似的事情。

问题:在从LevelScene切换到另一个场景之前,您是否已经对手势识别器进行了调整?如果没有,您绝对应该解决该问题!

10-08 00:25