Android 多点触控输入处理

Android multitouch input handling

我正在编写一个具有三个按钮的游戏,分别用于向左、向右移动和跳跃。

假设,我按右键移动由MotionEvent.Action_Down处理的字符。在按住主(右)按钮的同时,我按下由 MotionEvent.Action_Pointer_Down 处理的跳转按钮。现在我释放了应该将控件移动到 Action_Pointer_Up 的跳跃按钮,但我仍然希望我的角色向右移动,因为右键没有被释放,但我不知道如何处理这个。最初我认为控制权将再次转移到 MotionEvent.Action_Down 但那是行不通的。

有人可以帮我吗?

在 Android 中处理触摸事件时,onTouch 处理程序仅通知您有关状态的更改。它不会发送检测到的触摸的整个状态,而是您必须跟踪您关心的信息。

如您所见,首次检测到触摸时,将发送 Action_Down 事件。这是一组触摸事件的开始,但只会表示一个触摸事件。之后,任何新检测到的手指都将显示为 Action_Pointer_Down,如您所见。每个触摸点在其触摸期间都有自己的 ID,因此如果您关心 Action_Move 事件,您可以在将来知道哪个触摸移动到了哪里。随着触摸事件的进行,您将看到 Action_Pointer_Up。这将告诉您剩下哪个触摸事件(可能是第一个)。当最后的触摸消失时, Action_Up 被触发。那时没有任何东西触摸屏幕。

对于您的情况,您所看到的就是上面给出的期望。当跳转被移除时,Action_Pointer_Up被触发。您需要做的就是确认跳跃触摸已被移除,并让角色向右移动。除非用户移动或抬起手指,否则您将不会再看到右移信号的任何事件。