我发现这篇文章:http ://android-developers.blogspot.ca/2010/06/making-sense-of-multitouch.html这有助于我的理解,但我仍然不确定如何做我想做的事做。
在我的游戏中,我有一个虚拟模拟摇杆和一些按钮。一次只能注册 2 个手指。这就是我要的。一个用于模拟摇杆,一个用于按钮。
我不确定的主要事情是,假设我将手指放在模拟摇杆上并四处移动,然后将手指放在按钮上,然后松开按钮,模拟摇杆应该继续移动到我的第一根手指。
反之亦然,如果按钮先触摸然后再触摸模拟摇杆,如果我放开模拟摇杆,按钮仍应按下。
触摸指针在 Android 上是否以这种方式工作,例如,一旦我放下手指,无论我向上或向下放置任何其他手指,它都会按顺序记住我的第一根手指并给它一个向下、移动、移动、向上移动事件?
谢谢
理想情况下,我希望我有这样的功能:
void onTouch(int fingerID, int action, int x, int y)
{
}
当手指抬起时,放下的每个手指都会收到向下、移动和向上事件。
该游戏是一款赛车游戏,因此他们需要能够同时驾驶和推动油门。
我的问题类似于 action_move 中已识别的多点触控指针
编辑:
我有这个代码:
private void onTouch(int finger, int action, float x, float y)
{
if(action == MotionEvent.ACTION_DOWN || action == MotionEvent.ACTION_POINTER_DOWN)
{
createInput(finger, x, y);
}
else if(action == MotionEvent.ACTION_MOVE)
{
inputMove(finger, x, y);
}
else if(action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_POINTER_UP)
{
destroyInput(finger, x, y);
}
}
public void onTouch(MotionEvent ev)
{
final int pointerCount = ev.getPointerCount();
for (int p = 0; p < pointerCount; p++) {
onTouch(ev.getPointerId(p), ev.getAction(), ev.getX(p), ev.getY(p));
}
}
但它只适用于第一个。