Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 第二次进入场景,不接受输入_Ios_Cocos2d Iphone_Ccmenuitem - Fatal编程技术网

Ios 第二次进入场景,不接受输入

Ios 第二次进入场景,不接受输入,ios,cocos2d-iphone,ccmenuitem,Ios,Cocos2d Iphone,Ccmenuitem,我发现Cocos2D有一个特点,我似乎无法修复它。我从AppDelegate加载到一个菜单中,这是一个场景。场景包含一个CCLayer,它本身包含CCMenu。一切工作都是第一次完成的。游戏结束后,我将用户带到GameOverScene,并提示他们返回菜单。我正在重新加载菜单场景并调用[[CCDirector sharedDirector]replaceSecene:menu]。但是,进入此菜单后,并非所有输入功能都可用。我不能再点击菜单项,但我可以平移/多点触摸菜单项来触发菜单项。有什么好处

我发现Cocos2D有一个特点,我似乎无法修复它。我从AppDelegate加载到一个菜单中,这是一个场景。场景包含一个CCLayer,它本身包含CCMenu。一切工作都是第一次完成的。游戏结束后,我将用户带到GameOverScene,并提示他们返回菜单。我正在重新加载菜单场景并调用
[[CCDirector sharedDirector]replaceSecene:menu]
。但是,进入此菜单后,并非所有输入功能都可用。我不能再点击菜单项,但我可以平移/多点触摸菜单项来触发菜单项。有什么好处


初始化时是否有方法重置CCScene以接收输入,如果是,这会影响CCMenu的输入接收?

您是否覆盖了任何类中的任何on*方法,如
oneter
onExit
,等等


如果是这样的话,您必须在每一个中调用超级实现(即
[super-oneter]
),否则一些cocos2d功能(如调度或输入)可能会停止工作。

我终于找到了答案,答案就在我眼皮底下。在游戏开发的早期,我需要一种方法来阻止输入吞咽手势。我不完全确定这一行动的后果,但我能够这样做:

KKInput* input = [KKInput sharedInput];
UITapGestureRecognizer* tapGestureRecognizer;
tapGestureRecognizer = input.tapGestureRecognizer;
tapGestureRecognizer.cancelsTouchesInView = NO

似乎默认的Kobold2D行为是吞下所有触碰,这会阻止CCMenu接收任何点击手势。

这是我最初检查的,但我没有覆盖任何ONENERS。这真的很奇怪。菜单项没有显示任何点击,但是滑动/平移/多点触摸功能非常好。另一个原因可能是您的场景泄漏。在场景的dealloc中设置一个断点,如果它从未触发,那么旧场景仍在内存中,可能会导致各种奇怪的行为。我也尝试过。当我离开现场去看比赛时,菜单上的dealloc就被调用了。我想不出来,这让我快疯了。这可能是对Kobold2d输入的某种干扰吗?我不这么认为。。。因为我甚至没有在菜单中使用KKInput,而是使用ccmenu的内置触摸处理。