【发布时间】:2019-04-13 20:15:27
【问题描述】:
我正在用 android 创建 Pong 游戏,但我遇到了多点触控问题
为了移动我的两个玩家,我使用了 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)
如果有人可以帮助我解决我的问题,我将不胜感激。谢谢!
【问题讨论】:
标签: java android multi-touch touch-event