Al escribir una animación de JavaScript, por supuesto crea un bucle usando setInterval (o setTimeout repetido). Pero, ¿cuál es la mejor demora para usar en la (s) llamada (s) setInterval/setTimeout?¿Cómo determinar el mejor "framerate" (setInterval delay) para usar en un bucle de animación de JavaScript?
En el jQuery API page for the .animate() function, el usuario "fbogner" dice:
Sólo si alguien está interesado: Las animaciones son "prestados" por medio de un setInterval con un tiempo de 13 ms. ¡Esto es bastante rápido! El intervalo más rápido posible de Chrome es de aproximadamente 10 ms. Todos los demás navegadores "muestras" a aproximadamente 20-30 ms.
Cualquier idea de cómo jQuery decidido a utilizar este número específico?
Bounty. Espero que alguien con conocimiento del código fuente detrás de Chromium o Firefox pueda proporcionar algunos hechos concretos que puedan respaldar la decisión de un framerate específico. O tal vez una lista de animaciones (o marcos) y sus retrasos. Creo que esto constituye una oportunidad interesante para investigar un poco.
interesante - Me tomó el tiempo para mirar a Pac-Man fuente de Google para ver lo que hicieron. Configuran un conjunto de FPS posibles (90, 45, 30), comienzan en el primero, y luego en cada cuadro comprueban la "lentitud" del fotograma (cantidad que el fotograma superó el tiempo asignado). Si la lentitud excede 50 ms 20 veces, la velocidad de fotogramas se rebaja al siguiente en la lista (90 -> 45, 45 -> 30). Parece que la velocidad de fotogramas nunca se levanta una copia de seguridad, presumiblemente porque el juego es tan efímero que no valdría la pena codificarlo.
Ah, y el retraso setInterval por supuesto se establece en 1000/framerate. De hecho, usan setInterval y no repiten setTimeouts.
¡Creo que esta función de velocidad de fotogramas dinámica es bastante clara!
El enlace de la publicación de blog de '' John Resig '' indica una URL incorrecta –
La publicación del blog de John Resig debería quizás apunte a http://ejohn.org/blog/accuracy-of-javascript-time/ –
Corregido - gracias. –