我与MultiTouch战斗了一段时间,终于找到了我的错误并解决了它,但是一路上出现了一个我真的不明白的问题。
背景:
我正在使用Beginning Android Games中的Badlogic框架。 BAG框架将MotionEvent转换为ListArray,因此触摸事件(索引,向下,向上,移动,X和Y)在MotionEvent中断之外是持久的,并且可以在游戏代码中进行处理。
MultiTouchHandler将PointerIndex定义为:
int pointerIndex = (event.getAction() & MotionEvent.ACTION_POINTER_INDEX_MASK) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
我最初是这样的:
int pointerIndex = (event.getActionIndex() & MotionEvent.ACTION_POINTER_INDEX_MASK) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
现在很清楚,被 日志是一个救命稻草,可以帮助人们了解Android对MotionEvent的作用: 这是第四根手指向下触摸的输出: 事件:MotionEvent {action = ACTION_POINTER_DOWN(3),id [0] = 0,x [0] = 452.3717,y [0] = 1049.1803,toolType [0] = TOOL_TYPE_FINGER,id [1] = 1,x [1] = 447.37866,y [1] = 692.45905,toolType [1] = TOOL_TYPE_FINGER,id [2] = 2,x [2] = 302.57974,y [2] = 417.4775,toolType [2] = TOOL_TYPE_FINGER,id [ 3] = 3,x [3] = 96.86546,y [3] = 331.7408,toolType [3] = TOOL_TYPE_FINGER,buttonState = 0,metaState = 0,标志= 0x0,edgeFlags = 0x0,pointerCount = 4,historySize = 0, eventTime = 15931660,downTime = 15928534,deviceId = 10,source = 0x1002} 我的问题: 您为什么要使用: (event.getAction()和MotionEvent.ACTION_POINTER_INDEX_SHIFT)>> MotionEvent.ACTION_POINTER_INDEX_SHIFT 在以下情况下从getAction()获取指针索引(上述事件为getAction提供了773 ): event.getActionIndex(); 为您提供索引(上面的事件为getActionIndex提供3),而无需掩盖和移位位? getActionIndex自8(引入多点触摸)以来就已经存在于API中? 我了解对getAction进行屏蔽以查找操作 event.getAction()和MotionEvent.ACTION_MASK; (给您“ 5”作为上述事件的动作int ),但是获取索引似乎很“忙碌”。我发现的每个示例都使用getAction(已屏蔽和移位)。我担心通过使用getActionIndex而不是getActon(掩盖并转移)的“隐身”错误。 我想念什么?Log.d(TAG, "Event: " + event);