2014-12-24 75 views
1
// RIGHT BUTTON 
    Button btnRight = (Button) findViewById(R.id.btnRight); 
    btnRight.setOnTouchListener(new OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 

      if(event.getAction() == MotionEvent.ACTION_DOWN) { 
       API_send_movement("move_right"); 
      } else if (event.getAction() == MotionEvent.ACTION_UP) { 
       API_send_movement("stop_right"); 
      } 
      return false; // This will enable players to drag their finger 
     } 

    }); 

目的:爲了有一個玩家拖動手指碰到一些按鈕,上,左,右。這就是爲什麼它返回false。速率限制功能,同時按住一個按鈕

這很好用!

問題:我該如何'限制'這個?目前它每發出一個信號都會發出一個信號,並且需要放緩一下,每0.5秒一次。

回答

1

一個簡單的方法是設置一個long lastCall;變量,它存儲最後一次調用API_send_movement("move_right");的變量,如果時間差不夠大,立即返回。沿線的東西:

// RIGHT BUTTON 
Button btnRight = (Button) findViewById(R.id.btnRight); 
btnRight.setOnTouchListener(new OnTouchListener() { 
    long lastCall; 

    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     if(lastCall + 500 > System.currentTimeMillis()) { 
      return false; 
     } 

     lastCall = System.currentTimeMillis(); 
     if(event.getAction() == MotionEvent.ACTION_DOWN) { 
      API_send_movement("move_right"); 
     } else if (event.getAction() == MotionEvent.ACTION_UP) { 
      API_send_movement("stop_right"); 
     } 
     return false; // This will enable players to drag their finger 
    } 

}); 
+0

令人驚歎!謝謝,我今天會試一試。 – Andy

+0

已確認。非常感謝你。我是Java新手。 – Andy