¿JavaScript proporciona un temporizador de alta resolución?
¿JavaScript proporciona un temporizador de alta resolución?
He escrito algunos motores de juegos desde cero, algunos en C, algunos en Java y otros en Flash. Siempre sigo el mismo modelo básico cuando se trata de animaciones y gráficos interactivos. Cree una clase / estructura básica con el siguiente diseño:
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);
}
}
Time es muy importante para suavizar las animaciones y los cálculos del estado del juego. En el código nativo de Windows, usoQueryPerformanceCounter()
yQueryPerformanceFrequency()
para desempeñar el papel dequeryTime()
en cada ciclo de juego y pasa el tiempo para actualizar / renderizar. En Java, usoSystem.nanoTime()
.
¿Cuál es el equivalente en JavaScript? Es decir, algunas funciones comoqueryTime()
que devuelve un valor de tiempo con un alto grado de precisión (sub milisegundos). Por lo que he escuchado, la mejor precisión que puede obtener en JavaScript es de aproximadamente 15 ms ... lo cual es horrible para la animación.