2012-03-23 120 views
0

我正在使用計時系統,我得到的增量(每幀通過的毫秒數,60 fps)。如何使用增量毫秒來每x毫秒執行一次?

之前,我使用的定時,我算框架,做了這樣的事情:

if(frames % 60 == 0) /*do something*/; 
frames++; 

但我不能用同樣的事情三角洲:

if(milliseconds % 1000 == 0) /*do something*/; 
milliseconds += delta; 

三角洲的每一次變化,毫秒不會是每秒1000的倍數。

(我使用Java,但是這並不真正相關。)

編輯:

的,如果 - 從斯塔斯Makutin(毫秒prev_milliseconds> = 1000)的作品大部分。 但在我的代碼的一部分,也有一些是這樣的:

if(frames % 60 == 0){ 
    ... 
} 
if(frames % 60 == 30){ 
    ... 
} 

if(frames % 40 == 0){ 
    ... 
} 

有沒有辦法做到這一點,而無需使用prev_millisecond1,prev_millisecond2等

回答

0

大概的東西(即多個prev_millisecond變量。)像這樣將工作:

prev_milliseconds = 0; 

... 

if (milliseconds - prev_milliseconds >= 1000) 
{ 
    /* do somthing */ 
    prev_milliseconds = milliseconds; 
} 
milliseconds += delta; 

但是如果你的代碼的每一幀後,仍然引發爲什麼不繼續計數幀和使用舊代碼?

+0

我以前只是計算幀數,但我想增加更準確的時間(因爲我的程序在不同的計算機上以不同的速度運行)。所有對象移動時的速度都是像素/幀,但現在我將所有內容都改爲像素/秒。 – user1221546 2012-03-23 22:17:30