以下のコードでは、デバイスでマルチタッチをテストしています。私が抱えている問題は、移動アクションにあります。1 本の指で画面に触れると、Logcat でタッチ入力の ID を取得し、2 本目の指で画面に触れて移動を開始すると、最初の指ではないにもかかわらず、両方の指の ID を取得します。動いてる!混乱しており、コードを改善するために助けが必要です。
@Override
public boolean onTouch(View v, MotionEvent event) {
int pointerId;
int pointerIndex;
synchronized (gameLoop) {
for (int i = 0; i < event.getPointerCount() && i < 2; i++) {
num = event.getPointerCount();
//id = event.getPointerId(i);
// 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);
}
// Move
if(event.getActionMasked() == MotionEvent.ACTION_MOVE) {
int j = event.getPointerCount();
int id = event.getPointerId(i);
String numDown = Integer.toString(j);
String sId = Integer.toString(id);
Log.i("Test", "Moving: " + numDown + " ID: " + sId);
}
// Up
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;
}