0

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;
}
4

0 に答える 0