2012-03-23 138 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