안드로이드 멀티터치 구현을 하고 싶습니다. ( 이동과 점프 동시에 터치 가능하게 하려고 하는데.)
제가 잘 몰라서 아래와 같이 코딩했는데.
코딩전엔 화면터치중에 다른곳을 같이 터치하면 후에 터치한 것은 반응이 없고 기존 터치이벤트만 실행됬는데.
코딩후에는 동시터치시 전의 터치이벤트가 종료되고 후의 터치이벤트가 실행이 됩니다.
어떻게 고쳐야 될까요?...
int id[] = new int[3];
int x[] = new int[3];
int y[] = new int[3];
@Override
public boolean onTouchEvent(MotionEvent event) {
rX = (float)GAME_WIDTH / ScreenWidth;
rY = (float)GAME_HEIGHT / ScreenHeight;
int pointer_count = event.getPointerCount(); // 터치가 발생한 수의 값을 얻음
if(pointer_count > 3) pointer_count = 3; // 3개의 터치만 처리한다.
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
id[0] = event.getPointerId(0); //터치한 순간부터 주어지는 고유번호
x[0] = (int) (event.getX(0));
y[0] = (int) (event.getY(0));
JumpX = x[0];
JumpY = y[0];
Touched = true;
TouchX = x[0];
TouchY = y[0];
bx = x[0];
by = y[0];
JumpBtn = true;
CharactorJumping = 1;
case MotionEvent.ACTION_POINTER_DOWN:
for(int i=0; i < pointer_count; i++) {
id[i] = event.getPointerId(i); //터치한 순간부터 주어지는 고유번호
x[i] = (int) (event.getX(i));
y[i] = (int) (event.getY(i));
JumpX = x[i];
JumpY = y[i];
Touched = true;
TouchX = x[i];
TouchY = y[i];
bulletBtn = true;
JumpBtn = true;
CharactorJumping = 1;
}
break;
case MotionEvent.ACTION_MOVE:
for(int i=0; i < pointer_count; i++) {
id[1] = event.getPointerId(i); //터치한 순간부터 주어지는 고유번호
x[1] = (int) (event.getX(i));
y[1] = (int) (event.getY(i));
}
break;
case MotionEvent.ACTION_UP:
Touched = false;
bulletBtn = false;
}
return true;
}