Предоставляет ли JavaScript таймер с высоким разрешением?
Я написал несколько игровых движков с нуля, некоторые на C, некоторые на Java, а некоторые на Flash. Я всегда придерживаюсь той же базовой модели, когда речь идет о анимации и интерактивной графике. Создайте базовый класс/структуру со следующим дизайном:
void init() { /* Called once, preload essential resources here. */ }
void update(double time) { /* Updates game/animation state using high resolution time. */ }
void render(double time) { /* Updates screen graphics using high resolution time. */ }
void run()
{
double time;
init();
while (!done)
{
time = queryTime();
update(time);
render(time);
}
}
Время настолько важно, чтобы сгладить анимации и вычисления состояния игры. В собственном коде Windows я использую QueryPerformanceCounter()
и QueryPerformanceFrequency()
, чтобы выполнить роль queryTime()
в каждом игровом цикле и передать время для обновления/рендеринга. В Java я использую System.nanoTime()
.
Что эквивалентно в JavaScript? То есть, некоторая функция типа queryTime()
, которая возвращает значение времени с высокой степенью точности (sub millisecond). Из того, что я слышал, лучшая точность, которую вы можете получить в JavaScript, составляет около 15 & middot; ms... что ужасно для анимации.