2011-12-21 9 views
6

Hice algunas pruebas en Chrome y requestAnimationFrame rindió 61 fps, mientras que setTimeOut(callback, 0), rindió 233 fps.
Si a uno le gustaría tener más de 61 fps (que no estoy seguro para qué) pero no sería mejor renderizar con setTimeOut y simplemente usar requestAnimationFrame para detectar cuándo la ventana perdió el foco y luego detener los tiempos de espera hasta el foco vuelve?setTimeOut produce 233 fps mientras requestAnimationFrame produce 61

Y una pregunta adicional: ¿hay otra manera de detectar cuándo la ventana pierde el foco que no sea requestAnimationFrame que no llama a la devolución de llamada?

Respuesta

12

Trama de petición de animación está en sincronía con sus monitores de frecuencia de actualización (no sirve de nada para animar más marcos de lo que en realidad se está mostrando en la pantalla)

Aquí es una referencia a partir de los documentos de Mozilla: https://developer.mozilla.org/en/DOM/Animations_using_MozBeforePaint

Control de tasa de cuadro

MozBeforePaint no disparará más de un número fijo de veces por segundos, por ejemplo 50 o 60. Esto es intencional, porque los sistemas y hardware operativos modernos no permitirán que el navegador muestre más cuadros que que de todos modos. Limitar la velocidad de cuadros evita el desperdicio de trabajo, por lo tanto, , lo que ahorra energía y uso de la CPU y mejora el rendimiento general del sistema.

Cuestiones relacionadas