如何使用delta毫秒来每隔x毫秒执行一次操作?

时间:2012-03-23 21:45:56

标签: timing delta timedelta

我正在使用一个计时系统,我得到delta(每帧通过的毫秒数,60 fps)。

在我使用计时之前,我计算了帧并做了类似的事情:

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

但我不能对delta使用相同的东西:

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

Delta每次都会改变,毫秒不会是每秒1000的倍数。

(我正在使用Java,但这并不相关。)

编辑:

Stas Makutin的if(毫秒 - prev_milliseconds> = 1000)在很大程度上起作用。 但在我的部分代码中,有类似的东西:

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

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

有没有办法在不使用prev_millisecond1,prev_millisecond2等的情况下执行此操作(即多个prev_millisecond变量。)

1 个答案:

答案 0 :(得分:0)

可能这样的事情会起作用:

prev_milliseconds = 0;

...

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

但是如果您的代码在每帧之后仍然触发,为什么不继续计算帧数并使用旧代码?