2012-12-01 37 views
4

我不想讓計時器每2.5秒(在程序開始時)做一個工作, 與以下代碼一起工作。timer.schedule變量速度

Timer timer = new Timer(); 


timer.schedule(new TimerTask() { 

    // @Override 
    @Override 
     public void run() { 

here is the code, and i do Speed = Speed-500 

     }, Speed,Speed); 

速度是一個INT:

public int Speed=2500; 

buth問題是,定時器的速度停留在2500,而可變速度用500每次降低,從而使部分工作。只有定時器不檢查速度是否改變。

有人可以幫助我嗎?

+0

你在運行方法中有'speed = speed - 500;'語句嗎? – assylias

+0

是的,我有,如果(分數== 10){ Speed = Speed-500;} – user1868409

回答

3

你不能這樣做,因爲一旦你完成時間表,它將使用Timer來修復它。

爲重複的固定延遲執行計劃指定的任務,從指定的延遲開始。隨後的執行大約按規定的時間間隔進行,並與指定的時間段分開。

在這種情況下,您可以取消上一個並安排新的TimerTask。

Timer timer = new Timer(); 

initialize the speed here 

loop based on time 

timer.schedule(new TimerTask() { 

    // @Override 
    @Override 
     public void run() { 

here is the code, and i do Speed = Speed-500 

     }, Speed,Speed); 
+0

你好,你是什麼意思'循環基於時間'? – user1868409

+0

每當你想減少時間,做任務到那個時間,然後再次用新的減少時間分配新的任務。 – sunleo

+0

所以我應該做speed-500,就在Timer timer = new Timer()下面。並在run()函數中? – user1868409