2016-06-07 32 views
0

剛剛完成了Java的學習,現在我正在開發我的第一個Java遊戲。問題是,當我嘗試在我的主循環中獲得增量時間時,delta時間通常是0.我該如何解決這個問題?我的主循環代碼:如何在Java中準確獲取deltaTime

double deltaTime=0; 
    while(!windowIsClosed){   //main loop 
     double beginTime=System.nanoTime()/1e9; //divide by 1e9 because I want time variables to be in seconds 

     animations(deltaTime); 
     repaint(); 


     double endTime=System.nanoTime()/1e9; 
     deltaTime=endTime-beginTime; 
+0

使用Java創建遊戲就像使用冰淇淋來建造房子。該材料不足以完成手頭的任務。 – Krythic

回答

4

您在while循環的開始覆蓋你BEGINTIME,所以你現在算什麼動畫需要多長時間才能完成。 如果你想從開始while循環計算增量,你應該把beginTime的賦值放在while之上。

另外,如果您使用的是Java 8,則可以使用新的Date/Time-API並利用Instant等類來存儲開始和結束時間以及持續時間,以計算其中兩個時間點之間的持續時間:

Duration deltaTime = Duration.ZERO; 
Instant beginTime = Instant.now(); 
while(!windowIsClosed){ 

    animations(deltaTime); 
    repaint(); 

    deltaTime = Duration.between(beginTime, Instant.now()); 
}