我发现了Cocos2D的特性,我似乎无法修复它。从AppDelegate我加载到一个菜单,这是一个CCScene。场景中有一个CCLayer,它本身拥有CCMenu。一切正常,第一次通过。我的游戏结束后,我将用户带到GameOverScene并提示他们返回菜单。我正在重新加载菜单场景并调用[[CCDirector sharedDirector] replaceScene:menu]
。但是,进入此菜单后,并非所有输入功能。我无法再点击菜单项,但我可以平移/多次触摸它们来触发项目。是什么给了什么?
初始化是否有某种方法可以重置CCScene以接收输入,如果是这样,这会搞乱CCMenu的输入接收吗?
答案 0 :(得分:1)
您是否在任何课程中覆盖了onEnter
,onExit
等任何on *方法?
如果是这样,你必须在每个中调用超级实现(即[super onEnter]
),否则一些cocos2d功能(如调度或输入)可能会停止工作。
答案 1 :(得分:1)
我终于明白了,答案就在我的鼻子底下。在我的游戏开发早期,我需要一种方法来阻止KKInput吞咽手势。我不完全确定这个动作的后果,但我能够这样做:
KKInput* input = [KKInput sharedInput];
UITapGestureRecognizer* tapGestureRecognizer;
tapGestureRecognizer = input.tapGestureRecognizer;
tapGestureRecognizer.cancelsTouchesInView = NO
似乎默认的Kobold2D行为是吞下所有触摸,这阻止了CCMenu接收任何轻击手势。