2012-01-14 8 views
4

AndEngine을 사용하여 onSceneTouchEvent 이벤트를 캡처 중입니다.Android에서 더블 탭 캡처하기

내가하고 싶은 것은 사용자가 화면을 두드리는 것을 포착 할 수 없도록하는 것입니다.

어쨌든 더블 탭을 감지하거나 비활성화 할 수 있습니까?

감사

+1

에서 촬영이 솔루션을 본 적이 있나요? 시스템 클럭을 사용하여 지연 시간을 설정하려면 http://stackoverflow.com/questions/6716224/ontap-listener-implementation을 참조하십시오. 그게 도움이 될거야. – TryTryAgain

+0

흠. 흥미 롭습니다. 예를 들어 답을 제시하면 올바르게 표시됩니다. –

+0

링크를 제공해 주셔서 감사합니다. 작동합니다. 행복하게 도왔습니다. –

답변

3

이 편집 : 더 일부 둘러보고 후, 나는이 더 잘 맞는 것 같아요 :

// in an onUpdate method 

onUpdate(float secondsElapsed){ 

if(touched){ 
if(seconds > 2){ 
doSomething(); 
touched = false; 
seconds = 0; 
} else{ 
seconds += secondsElapsed; 
} 
} 

} 

부터 촬영 : 위의 의견을 바탕으로 http://www.andengine.org/forums/gles1/delay-in-touchevent-t6087.html

, 확실 해요 SystemClock을 사용하여 다음과 같은 작업을 수행 할 수 있습니다.

이 유사한 지연, 뭔가를 추가로 멀리 얻을 수 있습니다 :

public boolean onTouch(View v, MotionEvent event) { 
      // TODO Auto-generated method stub 
      if(firstTap){ 
       thisTime = SystemClock.uptimeMillis(); 
       firstTap = false; 
      }else{ 
       prevTime = thisTime; 
       thisTime = SystemClock.uptimeMillis(); 

       //Check that thisTime is greater than prevTime 
       //just incase system clock reset to zero 
       if(thisTime > prevTime){ 

        //Check if times are within our max delay 
        if((thisTime - prevTime) <= DOUBLE_CLICK_MAX_DELAY){ 

         //We have detected a double tap! 
         Toast.makeText(DoubleTapActivity.this, "DOUBLE TAP DETECTED!!!", Toast.LENGTH_LONG).show(); 
         //PUT YOUR LOGIC HERE!!!! 

        }else{ 
         //Otherwise Reset firstTap 
         firstTap = true; 
        } 
       }else{ 
        firstTap = true; 
       } 
      } 
      return false; 
     } 

OnTap listener implementation

+0

고마워요. 좋은 대답들 –