0

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

在我使用计时之前,我计算了帧数并做了这样的事情:

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

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

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

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

(我正在使用 Java,但这并不重要。)

编辑:

Stas Makutin 的 if(milliseconds - prev_milliseconds >= 1000) 在大多数情况下都有效。但是在我的代码的一部分中,有这样的东西:

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

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

有没有办法在不使用 prev_millisecond1、prev_millisecond2 等的情况下做到这一点(即多个 prev_millisecond 变量。)

4

1 回答 1

0

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

prev_milliseconds = 0;

...

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

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

于 2012-03-23T22:00:03.747 回答