2014-12-07 1 views
0

2 차원 platfrom 게임에서 android 용으로 작업 중이며 터치 이벤트에 문제가 있습니다. 이 내 코드입니다 : 나는 사각형을 터치가 잘 작동 사각형 안에 놓으면게임에서 터치 동작이있는 버그

public boolean onTouch(MotionEvent e, int scaledX, int scaledY) { 
    if (e.getAction() == MotionEvent.ACTION_DOWN) { 
     for (int i = 0; i < object.size(); i++) { 
      tempObject = object.get(i); 
      if (tempObject.getId() == ObjectId.Player) { 
       if (moveRight.contains(scaledX, scaledY)) { 
        Log.d("PlayState", "Move button is pressed!"); 
        tempObject.setMovingRight(true); 

       } else { 
        tempObject.setMovingRight(false); 
       } 

      } 
     } 
    } 
    if (e.getAction() == MotionEvent.ACTION_UP) { 
     for (int i = 0; i < object.size(); i++) { 
      tempObject = object.get(i); 
      if (tempObject.getId() == ObjectId.Player) { 
       if (moveRight.contains(scaledX, scaledY)) { 
        Log.d("PlayState", "Move button is released!"); 
        tempObject.setMovingRight(false); 

       } 
      } 
     } 
    } 
    return true; 
} 

. 문제는 내가 터치하는 동안 직사각형을 터치하고 다른 곳으로 손가락을 움직이면 그 캐릭터는 계속 움직인다는 것입니다. 내 질문은 어떻게 프로그래밍 할 수 있도록 "movingRight"터치 만 사각형 내부에서 일어나는 동안 true입니다. 감사합니다. :)

답변

0

e.getAction() == MotionEvent.ACTION_OUTSIDE 일 때 setMovingRight(false) 일 수 있습니다. Here 모든 가능한 목록을 찾을 수 있습니다 MotionEvents. 이 경우에만 View 작동합니다

가장 쉬운 방법은 당신이 onTouchEvent(...)을 첨부했습니다 그 if (e.getAction() == MotionEvent.ACTION_UP || e.getAction() == MotionEvent.ACTION_OUTSIDE)

이 문 if (e.getAction() == MotionEvent.ACTION_UP)을 변경하는 것에 플레이어의 사각형 다음하지 크다. View가 큰 경우 당신은 내가 당신이 말한대로 문을 변경하는 것을 시도했다 if (e.getAction() == MotionEvent.ACTION_DOWN || e.getAction() == MotionEvent.MOVE)

+0

if (e.getAction() == MotionEvent.ACTION_DOWN) 을 변경 시도 할 수 있지만 그것을 해결 didnt가 .. – Guy

관련 문제