我正在写一款有三个按钮的游戏,分别用于左,右移动和跳跃。
假设我按下右键移动由MotionEvent.Action_Down
处理的字符。在按住主(右)按钮的同时按下由MotionEvent.Action_Pointer_Down
处理的跳转按钮。现在我释放跳转按钮,它应该将控件移动到Action_Pointer_Up
但是我仍然希望我的角色向右移动,因为右按钮尚未释放但我不知道如何处理这个。最初我认为控件将再次转移到MotionEvent.Action_Down
,但这不起作用。
有人可以帮我吗?
答案 0 :(得分:2)
在Android中处理触摸事件时,onTouch处理程序仅通知您状态的变化。它不会发送检测到的触摸的整个状态,而是必须跟踪您关心的信息。
首次检测到触摸时,会发送Action_Down事件,如您所见。这是一组触摸事件的开始,但只会表示一次触摸事件。之后,任何新检测到的手指都将显示为Action_Pointer_Down,如您所见。每个触摸点在其触摸持续时间内都有自己的ID,因此如果您关心Action_Move事件,您可以告诉将来哪个触摸移动到哪里。当触摸事件发生时,您将看到Action_Pointer_Up。这将告诉您剩下哪个触摸事件(可能是第一个)。当最后的触摸消失时,触发Action_Up。那时屏幕上什么都没有碰到。
对于您的情况,您所看到的就是您所期望的。删除跳转后,将触发Action_Pointer_Up。您需要做的就是验证跳转触摸是否被移除,并让角色向右移动。除非用户移动手指或抬起它,否则您将不会再看到移动右侧信号的事件。