繁体   English   中英

如何使用增量毫秒每x毫秒执行一次操作?

[英]How to use delta milliseconds to do something every x milliseconds?

我使用的计时系统会产生增量(每帧通过的毫秒数,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变量。)

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

prev_milliseconds = 0;

...

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM