2011-04-20 26 views
1

我正在開發一個2d的java遊戲,但我堅持定時器問題。這是我的遊戲循環:System.nanoTime問題()

void gameLoop(isRunning){ 
.... 

doStuff(); 

.... 
} 

我有環內的FPS測量這樣的代碼:

long thisLoop = System.currentTimeMillis(); 
delta = thisLoop - lastLoopTime; 
lastLoopTime = thisLoop; 

所以我得到自去年環多少時間已經過去了。但是,每當我嘗試使用System.nanoTime(),而不是System,currentTimeMillis()這樣的:

long thisLoop = System.nanoTime(); 
delta = thisLoop - lastLoopTime; 
lastLoopTime = thisLoop; 

我的比賽變得完全擰,不呈現任何過去的第一幀,沒有報告的錯誤只是凍結。我贏了7 64最新的Java 1.6。什麼可能是錯的?

+0

你正在做什麼'delta'或'lastLoopTime'?這可能是問題所在,但你沒有發佈該代碼。 – 2011-04-20 04:39:39

+0

什麼操作系統和版本?另見[這個答案](http://stackoverflow.com/questions/4588605)。 – trashgod 2011-04-20 04:47:50

回答

4

您乘以或除以1,000,000? 1 millisecond = 1 000 000 nanoseconds。我假設你的邏輯的其餘部分是以毫秒爲單位實現的。

+1

很確定毫秒有1,000,000納秒:) – WhiteFang34 2011-04-20 04:31:23

+0

AHAHAHAHAHAH!我現在很累,眼睛受傷了。但也許這是代碼中的問題? – les2 2011-04-20 04:32:30

+0

呵呵,我喜歡你現在如何將轉換鏈接到Google。 – WhiteFang34 2011-04-20 04:34:51

5

嘗試使用System.nanoTime()/1000000,因爲它的值是納秒而不是像你可能期望的毫秒。

相關問題