我是一名开发空气曲棍球安卓游戏的学生。 我在理解多点触控方面遇到了问题。 我刚刚学习了ACTION_DOWN,ACTION_POINTER_DOWN等。
但问题在于ACTION_MOVE。 我为2个玩家创建了2个精灵。第1个精灵会移动到我的第一个手指去的地方,但我的第二个精灵不会移动到我的第二个手指移动的位置。
我的问题是,我想如何确定哪个手指在ACTION_MOVE中移动?我试图使用getPointerId(索引),但我不明白如何使用它,因为如果第一根手指离开屏幕索引正在改变
switch (action & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN: {
break;
}
case MotionEvent.ACTION_POINTER_DOWN: {
break;
}
case MotionEvent.ACTION_UP: {
break;
}
case MotionEvent.ACTION_POINTER_UP: {
break;
}
case MotionEvent.ACTION_MOVE: {
if((int)event.getPointerId(index) == 0){ //i know this IF statement is wrong, what should i do?
player1.setX((int)event.getX()); //player1 & player2 is a sprite object
player1.setY((int)event.getY());
}
if((int)event.getPointerId(index) == 1){
player1.setX((int)event.getX());
player1.setY((int)event.getY());
}
}
}
答案 0 :(得分:0)
您无法知道首先触摸哪个区域。第一个手指/触摸获得指针id = 0第二个= 1,依此类推。你能做的是:
public boolean onTouchEvent(MotionEvent event) {
// If this does not work search for a way to get the screen width
WindowManager wm = (WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
int eventaction = event.getActionMasked();
int num = event.getPointerCount();
// For every touch
for (int a = 0; a < num; a++) {
int X = (int) event.getX(event.getPointerId(a));
int Y = (int) event.getY(event.getPointerId(a));
int allowed_touch_range = display.getWidth() / 2; // Your screen width divided by 2
switch (eventaction) {
case MotionEvent.ACTION_MOVE:
// Left half of the screen
if (X < allowed_touch_range) {
/* Player1 Move */
}
// Rigth half
if (X > allowed_touch_range) {
/* Player2 Move */
}
break;
}
}
return true;
}