Cocos2d-iphone 1.0.1.
- 我的主要游戏场景要求玩家用手指按下屏幕以使角色移动。
- 当角色移动时(因此手指按下屏幕),可能会发生战斗。这样的战斗会触发一个新的
CCScene
,它被推送到CCDirector
中(因此主要游戏场景仍然存在于内存中)。 - 在战斗中,自然地,玩家可能会在某个时刻松开手指。
- 当战斗结束时,
CCScene
被弹出。至此,游戏主场景回归。
- 当角色移动时(因此手指按下屏幕),可能会发生战斗。这样的战斗会触发一个新的
- 现在有一个问题:主游戏场景仍然认为在战斗前最初按下屏幕的手指仍然在同一点按下它,因此操纵杆是尽管手指不再按下屏幕,但仍然“正常工作”并且玩家仍在移动。
有没有办法“重置”屏幕触摸?我想在主游戏场景的 onEnter
方法中这样做。我试过类似的东西
self.isTouchEnabled = NO;
self.isTouchEnabled = YES;
希望这样会重新注册触摸调度程序,从而导致某种重置。它没有用。
基本上,我需要一种方法来告诉主要游戏场景“伙计,无论你怎么想,都没有人触摸屏幕”。
编辑
请注意,如果您再次按下屏幕,它就会固定。
最佳答案
为了确保我理解问题:
弹出战斗场景后,角色继续四处移动,就好像用户的手指从未从操纵杆上松开一样?
我最初的想法是,您在代码中的某处存在更深层次的潜在设计缺陷。据我了解,您想至少使用一层来处理输入。尝试将“游戏”CCScene 中的所有内容转移到“游戏”CCLayer 并将该层添加为场景的子层。然后注册层以接收触摸输入。
如果这不起作用,您始终可以使用标志。将您所在的场景与您想要进入的场景进行比较,如果不是,请不要激活操纵杆 Controller 。有点 hack-y 但它有效。
关于cocos2d-iphone - 是否有可能 "reset"任何现有的接触?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13709535/