Как использовать дельта-миллисекунды, чтобы делать что-то каждые x миллисекунд? - PullRequest
0 голосов
/ 24 марта 2012

Я использую систему синхронизации, где я получаю дельту (количество миллисекунд, прошедших каждый кадр, 60 кадров в секунду).

Прежде чем использовать тайминг, я посчитал кадры и сделал что-то вроде этого:

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

Но я не могу использовать то же самое с дельтой:

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

Дельта изменяется каждый раз, и миллисекунды не будут кратны 1000 в секунду.

(я использую Java, но это не совсем актуально.)

Edit:

If (миллисекунды - prev_milliseconds> = 1000) от Стаса Макутина работает в основном. Но в части моего кода есть что-то вроде этого:

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

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

Есть ли способ сделать это без использования prev_millisecond1, prev_millisecond2 и т. Д. (Т. Е. Несколько переменных prev_millisecond.)

1 Ответ

0 голосов
/ 24 марта 2012

Вероятно, что-то вроде этого будет работать:

prev_milliseconds = 0;

...

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

Но если ваш код по-прежнему срабатывает после каждого кадра, почему бы не продолжить подсчет кадров и использовать ваш старый код?

...