有人可以帮助解决我在角色死亡时取消触摸事件时遇到的这个问题。我有基于屏幕 X 轴的字符控制器(触摸精灵并左右拖动移动)。我的控制器类是 CCNode 的子类,并且具有向 TouchDispatcher 注册触摸所需的所有方法。ccTouchBegin、ccTouchMove 和 ccTouchEnd 工作正常,但是当我的 ccTouchMove 正在运行并且我的角色死亡时,我想将控制器、玩家位置重置到屏幕上的起始位置,但直到我抬起手指后才会触发(因此 ccTouchEnd)触发然后我的 GameLayer(CCLayer) 中的重置播放器/控制器触发。
我认为通过添加 CCTouchCancel 方法可以解决问题,但它不会被解雇。我的每个 Touch 事件方法在执行任何操作之前都会首先检查控制器的状态(IDLE、ACTIVE、STOP)。我也有一个更新方法来处理拖动,但它还在允许玩家拖动/移动角色之前检查 controller.state == ACTIVE。
当我的角色死亡时,在我的 Gamelayer 的更新方法中,我设置了 controller.state = STOP。在控制器的 STOP 状态更新方法中,我调用了与方法[[[CCDirector sharedDirector] touchDispatcher] removeDelegate: self];
中相同的代码onExit
,但触摸事件并未取消。只有当我抬起手指时,触摸事件才会停止。然后在 Gamelayer 中进行的状态更改触发
请指教。