Я создаю игру Pong в Android, и у меня проблема с мультитачем
Для перемещения двух моих игроков я использую метод onTouchEvent, и оба игрока могут быть перемещены одновременно. Есть одна проблема: если последний палец вниз на экране не первый, у меня есть исключение, потому что pointerId оставшегося пальца равен pointerCount, и моя игра завершается. И я должен использовать метод onTouchEvent, чтобы получить координаты x и y всех пальцев на экране.
@SuppressLint("ClickableViewAccessibility")
public boolean onTouchEvent(MotionEvent event) {
final int actionPerformed = event.getAction();
switch(actionPerformed) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_MOVE:
int pointerCount = event.getPointerCount();
for(int i=0; i<pointerCount; i++) {
int x = (int) event.getX(event.getPointerId(i));
int y = (int) event.getY(event.getPointerId(i));
if(y<this.height/2-joueur1.getRayon()-1) { joueur1.setX(x); joueur1.setY(y); }
else if(y>this.height/2+joueur2.getRayon()+1){ joueur2.setX(x); joueur2.setY(y); }
}
break;
case MotionEvent.ACTION_UP:
}
return true;
}
//This is the message shown when I'm releasing a finger which is not the last one down
E/MotionEvent-JNI: An exception occurred: pointerCount 1, pointerIndex 1.
E/InputEventReceiver: Exception dispatching input event.
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.pong, PID: 29258
java.lang.IllegalArgumentException: pointerIndex out of range
at android.view.MotionEvent.nativeGetAxisValue(Native Method)
Если кто-нибудь может помочь мне решить мою проблему, я был бы благодарен. Спасибо!