2014-09-11 4 views
0

나는 안드로이드 게임을 개발 중입니다. 나는 내 손가락은 내가 Log.e("Motion",String.valueOf(e.getAction())); 를 사용하여 확인 화면Android에서 지속적인 터치 감지

if(e.getAction() == MotionEvent.ACTION_UP) this.downPressed=false; else this.downPressed=true;

if(this.downPressed) { //move the object }

에있는 경우 내가 처음에 내 손가락을 배치 할 때 확인하려면 다음 코드를 ACTION_DOWN 화면이 감지됩니다. 난 여전히 화면에 내 손가락을 때

그런 다음, ACTION_MOVE의 몇 가지 흔적이 아직도 화면에 내 손가락을 때 그런 것도 내가 떨어져 내 손가락을 마지막으로

을 감지되지

을 감지 화면 ACTION_UP이 감지되었습니다.

손가락이 화면에 놓여질 때 아무 것도 감지하지 못합니다. 이 지속적인 접촉을 감지 할 때 도와주세요.

+0

ACTION_UP 이벤트가 발생하지 않았기 때문에 손가락이 여전히 화면에 있음을 알았습니다. 당신이 무엇을 하려는지 확실하지 않지만, 부울 플래그를 사용하여 현재 상태를 추적 할 수 있습니다. – dharms

+0

손가락이 움직이면 어떤 이벤트가 발생합니까? – pskink

+0

@dcharms 예, downPressed는 부울 플래그입니다. 나는 그것을 false로 설정했을 때 ACTION_UP; 그렇지 않으면 사실이어야합니다. 그러나 이러한 것들이 onTouchEvent() 내에서 발생하므로 도움이되지 않습니다 – David

답변

0

onTouch 이벤트 메서드 내에서 이동 논리를 수행하면 안됩니다. 오히려 현재하고있는 것처럼 TOUCH_DOWN이 감지되면 플래그를 설정하고 TOUCH_UP이 시작되면 지워줍니다. 그런 다음 지속적으로 실행되는 업데이트 처리기를 만듭니다. 플래그가 설정된 경우 오브젝트를 이동합니다.

+0

감사합니다 - 작동 했어요. 다음과 같이 변경했습니다. – David

+0

'public boolean onTouchEvent (MotionEvent e) {if (e.getAction() == MotionEvent.ACTION_DOWN) { \t downPressed = true; \t handler.post (repeater); \t \t \t } 경우 (e.getAction() == MotionEvent.ACTION_UP) { \t downPressed = 거짓; }} – David

+0

의 Runnable 리피터 = 새의 Runnable() { \t @Override \t 공공 무효 실행() { \t \t manualMove (사실, touch_x, touch_y); \t if (downPressed) { \t 처리기.postDelayed (this, 10); \t} \t} \t}}; – David