2012-03-23 3 views
0

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

Раньше я время, я насчитал кадры и сделал что-то вроде этого:

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

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

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

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

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

Edit:

КРП (миллисекунды - prev_milliseconds> = 1000) от Стаса Makutin работает по большей части. Но в части моего кода, есть что-то вроде этого:

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

Смежные вопросы