cocos2d-iphone - 是否有可能 "reset"任何现有的接触?

标签 cocos2d-iphone

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/

相关文章:

ios - 当计数达到 0 时改变场景 Cocos2d 3.0

ios - Ad Hoc 测试安装失败

ios - 在 MKMapView 上同步 COCOS2D 层

xcode - Cocos2d 2.1和Xcode7 iOS9崩溃着色器

cocos2d-iphone - Cocos2d 2.0.3 使用未声明的标识符 'glColor4f'

iphone - Kobold2d 和 Cocos Builder : setting start scene

cocos2d-iphone - 使用 cocos 2D 生成动画 Sprite 表的任何工具

iphone - 在特定时间启动CCAction

iphone - Cocos2d iPhone 中的 NSNotification

objective-c - CCSpriteFrameCache 优化