2014-04-16 90 views
-1

我正在處理的代碼涉及一羣鳥在畫布上快速移動。我需要做的是通過使用System.currentTimeMillis()方法減慢鳥兒刷新屏幕的速度。我需要在一個while循環中使用它,以便它等待20毫秒,然後再讓它們移動。我不太確定如何做到這一點。使用SystemCurrentTimeMillis延遲時間

下面是當前的代碼:

while(NeWorld.isAlive()) 
{ 
    NeWorld.updateWorld(); 
} 

NewWorld.isAlive允許小鳥走動,和NeWorld.updateWorld()刷新它。它刷新得太快,我需要用System.currentTimeMillis()方法減慢速度,以便每20毫秒刷新一次。

回答

0

如果你把你的updateWorld()邏輯放在一個單獨的函數中,你可以用一定的時間間隔來調用它。這是一個例子。

boolean iShouldStillUpdateWorld = true; 
while (iShouldStillUpdateWorld) { 
    if (System.currentTimeMillis() % 20 == 0) { 
     updateWorld(); 
    } 
    iShouldStillUpdateWorld = checkIfIShouldUpdateWorld(); 
} 

這只是坐在一個循環,並檢查是否20毫秒已通過。如果是這樣,它會調用您的updateWorld()函數,然後檢查是否應該繼續重複此過程。

+0

如果'updateWorld()'運行的時間少於20毫秒,那麼最終會再次運行它而不會暫停運行......此外,我讀取問題的方式,您應該等待一個結束時間爲20毫秒'updateWorld()'和下一個開始,即不只是每20毫秒。 –