Android 多点触控安卓-一个手指使用一半屏幕,另一个手指使用一半屏幕
嗨,我正在做一个分屏游戏,我想不出如何把控制装置放下。现在,如果只有一个人在触摸屏幕,它们工作得很好,但一旦有多个人在触摸屏幕,第一个触摸的人是唯一能够控制屏幕的人。所以我需要实现多点触摸。我不知道怎么做,一旦一个手指向下控制屏幕上半部分的对象,另一个手指可以向下控制屏幕下半部分。我该怎么做 编辑: 我改了,但还是不行,有人能告诉我为什么吗 我的尝试无效:Android 多点触控安卓-一个手指使用一半屏幕,另一个手指使用一半屏幕,android,multi-touch,Android,Multi Touch,嗨,我正在做一个分屏游戏,我想不出如何把控制装置放下。现在,如果只有一个人在触摸屏幕,它们工作得很好,但一旦有多个人在触摸屏幕,第一个触摸的人是唯一能够控制屏幕的人。所以我需要实现多点触摸。我不知道怎么做,一旦一个手指向下控制屏幕上半部分的对象,另一个手指可以向下控制屏幕下半部分。我该怎么做 编辑: 我改了,但还是不行,有人能告诉我为什么吗 我的尝试无效: public boolean onTouch(View v, MotionEvent event){ //needs mul
public boolean onTouch(View v, MotionEvent event){
//needs multitouch
if(checkInGame()){
if(event.getY() < this.getMeasuredHeight() / 2){
pointerId1 = event.getPointerId(event.getActionIndex());
}else{
pointerId2 = event.getPointerId(event.getActionIndex());
}
switch(event.getAction() & MotionEvent.ACTION_MASK){
case MotionEvent.ACTION_MOVE:{
if(event.getPointerId(event.getActionIndex()) == pointerId1){
Log.d("Touch","Move1");
int pointerIndex = event.getActionIndex();
int moveX = 0;
int moveY = 0;
moveX = (int) event.getX(pointerIndex) - sX;
moveY = (int) event.getY(pointerIndex) - sY;
ship1.setLoc(moveX, moveY);
sX = sX + moveX;
sY = sY + moveY;
}else if(event.getPointerId(event.getActionIndex()) == pointerId2){
int pointerIndex = event.getActionIndex();
Log.d("Touch","Move2");
int moveX = 0;
int moveY = 0;
moveX = (int) event.getX(pointerIndex) - sX2;
moveY = (int) event.getY(pointerIndex) - sY2;
ship2.setLoc(moveX, moveY);
sX2 = sX2 + moveX;
sY2 = sY2 + moveY;
}
return true;
}
case MotionEvent.ACTION_DOWN: {
if(event.getPointerId(event.getActionIndex()) == pointerId1){
Log.d("Touch","Top1");
int pointerIndex = event.getActionIndex();
sX = (int) event.getX(pointerIndex);
sY = (int) event.getY(pointerIndex);
}else if(event.getPointerId(event.getActionIndex()) == pointerId2){
int pointerIndex = event.getActionIndex();
Log.d("Touch","Bottom1");
sX2 = (int) event.getX(pointerIndex);
sY2 = (int) event.getY(pointerIndex);
}
return true;
}
case MotionEvent.ACTION_POINTER_DOWN:{
if(event.getPointerId(event.getActionIndex()) == pointerId1){
Log.d("Touch","Top2");
int pointerIndex = event.getActionIndex();
sX = (int) event.getX(pointerIndex);
sY = (int) event.getY(pointerIndex);
}else if(event.getPointerId(event.getActionIndex()) == pointerId2){
int pointerIndex = event.getActionIndex();
Log.d("Touch","Bottom2");
sX2 = (int) event.getX(pointerIndex);
sY2 = (int) event.getY(pointerIndex);
}
return true;
}
}
public boolean onTouch(视图v,运动事件){
//需要多点触摸
if(checkInGame()){
如果(event.getY()
你可能想通过它的ID来跟踪每个指针。在指针向下时,检查ID,这样你就知道ID为1的指针是控制对象1。读一下这篇Android博客文章,它可能会有帮助:看,我读了几遍,我真的不太明白,但是如果你d一根手指向下,它可能有食指0和ID 0。然后添加另一根手指,它会变成食指1和ID 1。如果删除第一根手指,第二根手指会变成食指0,但其ID仍然为1。系统会以某种方式为您跟踪每个手指。您得到了什么logcat输出?问题在于getActionIndex()
。该方法仅适用于操作指针向上或操作指针向下,否则它将只返回第一个指针,因为这是操作指针移动。您仍然可以使用MotionEvent.getX(int pointerIndex)
获取每个指针的x和y。