Cocos2d GestureRecognizer在完成Level并重新启动后无法工作

问题描述:

我目前正在用cocos2d构建游戏,并且存在以下问题: 我有一个MenuScene,用户可以在其中启动游戏。当他这样做,gestureRecognizer被初始化在下列方式级别:Cocos2d GestureRecognizer在完成Level并重新启动后无法工作

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

一切工作正常,电平完成后,用户将看到一个gameOverScene,并发送回MenuScene。当我再次开始游戏时,除了事实之外,一切都有效(游戏中的动画,等级显示等),即gestureRecognizer不再识别任何触摸。你有什么想法,为什么这可能是或如何调试呢?

谢谢。

+0

可能会有一些干扰self.isTouchEnabled = YES; menuScene/gameOverScene的功能我猜...还是不知道,怎么弄出来的:/ – dschihejns

+0

让我问你这个问题:1-你的意思是UIPanGestureRecognizer在第一次开始游戏之前工作正常吗? 2-你把那段代码完全放在哪里? – Mazyod

在很可能的情况下,gestureRecognizer保留目标。我遇到了类似的问题,导致作为UIKit类的委托的“目标”场景不能被释放。即整个场景被泄露。

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

问题:在从LevelScene更改为另一个场景之前,您是否重新设置了gestureRecognizer?如果不是,你绝对应该解决这个问题!

+0

谢谢,我确实忘了释放gestureRecognizer并重新初始化gestureRecognizer对象.. doh。 – dschihejns