2012-08-11 49 views
0

嗨我在我的Android應用程序中使用AndEngine。我想知道是否有一種方法可以檢測對象(在這種情況下是AnalogOnScreenControls的對象)何時被觸摸到未觸摸?我想設置一個特定的命令,只有當某人放開「模擬棒」實體時才執行該命令。這些控件還使用浮點值來檢測它們在哪個位置,因此它也可以是當值從零以外的某個值變爲零時的方法,因爲當控件閒置時變量設置爲零。感謝您提前提供任何幫助!Android - AndEngine「不再觸摸」方法?

回答

3

TouchEvent中有一個可以檢查的標誌。大多數時候我都這樣做:

@Override 
public boolean onAreaTouched(final TouchEvent touchEvent, ITouchArea touchArea, float touchAreaLocalX, float touchAreaLocalY) { 
    switch(touchEvent.getAction()){ 
       case TouchEvent.ACTION_MOVE:{ 
        // do stuff when finger moves 
        return true; // don't forget to break, or return true directly if the event was handled 
       } 
       case TouchEvent.ACTION_DOWN:{ 
        // do stuff, the first time the finger touches the display 
        return true; 
       } 
       case TouchEvent.ACTION_UP:{ 
        // do stuff when the finger goes up again and ends the touch event (your case) 
        return true; 
       } 
       case TouchEvent.ACTION_CANCEL:{ 
        // If the event is somehow canceled - e.g. the finger leaves the display 
        return true; 
       } 
       default:{ 
        // none of the above 
        return false; 
       } 
    } 
} 

就是這樣的。如果您需要有關此事件的更多信息,請使用touchEvent.getMotionEvent()獲取MotionEvent,並查看其中的其他選項。 順便說一句:我寧願直接使用return true語句,而不是在這裏休息一下,只是爲了確保觸摸事件不會在應用程序中使用。但是你當然可以改變它。

希望這有助於

克里斯托夫

+0

太棒了,完美的工作!謝謝! – davanp 2012-08-15 01:04:36

0

您可以創建一個名爲isTouched場(全局變量),最初將其設置爲false。然後在onControlChange()你這樣做:

if(pValueX == 0 && pValueY == 0 && isTouched){ //means knob has recently been touched 
isTouched = false; //set to false so that being idle does not come here 
//do your thing here 
} 
else{ 
isTouched = true; 
//do normal stuff here 
}