我發現這篇文章:http://android-developers.blogspot.ca/2010/06/making-sense-of-multitouch.html這有助於我的理解,但我仍然不知道該怎麼做我想要做的事。瞭解Android上的多點觸控?
在我的比賽,我有一個虛擬搖桿和一些按鈕。只有2個手指會一次註冊。這就是我要的。一個用於模擬棒,另一個用於按鈕。
我不確定的主要原因是,我把一個手指放在模擬棒上並移動它,然後將手指放在按鈕上,然後釋放按鈕,模擬棒應該繼續移動到我的第一根手指。
反之亦然,如果按鈕,然後再觸摸搖桿,如果我放手模擬的粘按鈕應該還是可以下推。
在Android上觸摸指針是否以這種方式工作,就像在我放下手指時一樣,無論我放下或放下其他手指,它都會按順序記住我的第一根手指,並將它放下,移動向上移動事件?
感謝
理想我希望我有這樣的功能:
void onTouch(int fingerID, int action, int x, int y)
{
}
凡獲放下每個手指將接收下來,當手指上升移動和事件的方式。
遊戲是一個賽車遊戲,使他們需要能夠駕馭,並在同一時間推氣體。
我的問題是類似這樣的 identified multi touch pointer in 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));
}
}
但它僅適用於第一個。
我可能是錯的,如果你訂閱MotionEvents,我覺得PointerId可以在MotionEvent每個點進行檢索。在這種情況下,如果您瀏覽MotionEvent中的批處理索引,則應該能夠確定哪些索引適用於哪些索引。所以只要你正確地爲每個指針事件賦予移動,它應該沒問題。 –