1 本の指で画面に触れると、LogCat に ID:0 が表示されます。人差し指で画面に触れたまま、2 本目の指で画面に触れると、LogCat に ID:1 が表示されます。すべてが完璧です!
しかし、2 番目の指を動かし始めると、しばらくするとACTION_POINTER_UP
イベントが発生し、その理由がわかりません。2 番目の指を 1 番目の指の近くに移動すると、非常に簡単に起こります。しかしACTION_POINTER_UP
、ID:0 の最初の指を動かしている間はまったくありません。
なぜこれが起こるのか、コードで何が間違っていたのか、またはこれを防ぐ方法を誰かに教えてもらえますか?
@Override
public boolean onTouch(View v, MotionEvent event) {
int pointerId;
int pointerIndex;
synchronized (gameLoop) {
for (int i = 0; i < event.getPointerCount() && i < 2; i++) {
id = event.getPointerCount();
// Pointer down
if(event.getActionIndex() == i && (event.getActionMasked() == MotionEvent.ACTION_POINTER_DOWN || event.getActionMasked() == MotionEvent.ACTION_DOWN)) {
int j = event.getPointerCount();
int id = event.getPointerId(i);
String numDown = Integer.toString(j);
String sId = Integer.toString(id);
Log.i("Test", "Number DOWN: " + numDown + " ID: " + sId);
}
// Pointer up
else if(event.getActionIndex() == i && (event.getActionMasked() == MotionEvent.ACTION_POINTER_UP || event.getActionMasked() == MotionEvent.ACTION_UP)) {
int k = event.getPointerCount();
int kid = event.getPointerId(i);
String numUp = Integer.toString(k);
String ssId = Integer.toString(kid);
Log.i("Test", "Number UP: " + numUp + " ID: " + ssId);
}
}
}
return true;
}