Red de conocimiento informático -
Material del sitio web - Cómo usar requestanimationframe para optimizar el rendimiento del navegadorEscribí una función jog requestAnimationFrame. Aprendí un poco sobre ella antes, pero siempre sentí que no la entendía muy bien, así que la traduje. un artículo del extranjero. Artículos antiguos para compartir y aprender. ¿Qué es requestAnimationFrame? En el pasado, necesitábamos un temporizador para realizar animaciones y hacíamos algunos cambios cada milisegundo. Ahora hay buenas noticias: los proveedores de navegadores decidieron proporcionar una forma especial de hacer animaciones, requestAnimationFrame(), que permite una mejor optimización a nivel del navegador. Sin embargo, esta es solo una API básica para realizar animaciones, es decir, no se basa en cambios de estilo de elementos DOM, lienzo o WebGL, por lo que debemos escribir nuestros propios detalles de animación. ¿Por qué usarlo? Para n animaciones al mismo tiempo, el navegador puede optimizar el trabajo de optimización que originalmente requería N reflujos y redibujados a 1 vez, logrando así efectos de animación de alta calidad. Por ejemplo, ahora hay animaciones basadas en JS, animaciones de transición basadas en CSS y SVG SMIL. Además, si una pestaña del navegador ejecuta dicha animación y cambia a otra pestaña, o simplemente la minimiza, o en cualquier caso ya no puede verla, el navegador detendrá la animación. Esto significa un menor consumo de CPU, GPU y memoria, y una mayor duración de la batería. ¿Cómo utilizar? Copie el código de la siguiente manera // capa de cuña con setTimeout fallback window.requestAnimFrame = (function(){ return window.requestAnimationFrame window.webkitRequestAnimationFrame window.mozRequestAnimationFrame window.oRequestAnimationFrame window.msRequestAnimationFrame function(/*) function */ callback, /* DOMElement * /elemento){ ventana.setTimeout(devolución de llamada, 1000/60 } })(); // uso: // en lugar de setInterval(render, 16) ....(función animloop(){ render()); ; requestAnimFrame (animloop, elemento); })(); Nota: uso "requestAnimFrame" aquí porque la especificación aún está evolucionando y no quiero estar a merced de la especificación.
Cómo usar requestanimationframe para optimizar el rendimiento del navegadorEscribí una función jog requestAnimationFrame. Aprendí un poco sobre ella antes, pero siempre sentí que no la entendía muy bien, así que la traduje. un artículo del extranjero. Artículos antiguos para compartir y aprender. ¿Qué es requestAnimationFrame? En el pasado, necesitábamos un temporizador para realizar animaciones y hacíamos algunos cambios cada milisegundo. Ahora hay buenas noticias: los proveedores de navegadores decidieron proporcionar una forma especial de hacer animaciones, requestAnimationFrame(), que permite una mejor optimización a nivel del navegador. Sin embargo, esta es solo una API básica para realizar animaciones, es decir, no se basa en cambios de estilo de elementos DOM, lienzo o WebGL, por lo que debemos escribir nuestros propios detalles de animación. ¿Por qué usarlo? Para n animaciones al mismo tiempo, el navegador puede optimizar el trabajo de optimización que originalmente requería N reflujos y redibujados a 1 vez, logrando así efectos de animación de alta calidad. Por ejemplo, ahora hay animaciones basadas en JS, animaciones de transición basadas en CSS y SVG SMIL. Además, si una pestaña del navegador ejecuta dicha animación y cambia a otra pestaña, o simplemente la minimiza, o en cualquier caso ya no puede verla, el navegador detendrá la animación. Esto significa un menor consumo de CPU, GPU y memoria, y una mayor duración de la batería. ¿Cómo utilizar? Copie el código de la siguiente manera // capa de cuña con setTimeout fallback window.requestAnimFrame = (function(){ return window.requestAnimationFrame window.webkitRequestAnimationFrame window.mozRequestAnimationFrame window.oRequestAnimationFrame window.msRequestAnimationFrame function(/*) function */ callback, /* DOMElement * /elemento){ ventana.setTimeout(devolución de llamada, 1000/60 } })(); // uso: // en lugar de setInterval(render, 16) ....(función animloop(){ render()); ; requestAnimFrame (animloop, elemento); })(); Nota: uso "requestAnimFrame" aquí porque la especificación aún está evolucionando y no quiero estar a merced de la especificación.
requestAnimationFrame Código de copia de API: window.requestAnimationFrame(function(/* time */ time){ // time ~= new Date // the unix time }, /* elem delimitador opcional */ elem se proporcionan las versiones de Chrome y Firefox); primero El código copiado es el siguiente: mozRequestAnimationFrame([callback]); // Ventana de Firefox. webkitRequestAnimationFrame(callback[, elemento]); // Parámetros de Chrome: devolución de llamada: (FF opcional, se requiere Chrome) La siguiente llamada de redibujo es una función. Su primer parámetro es el tiempo actual: esencialmente el lienzo y "dibujo" es la animación. (un elemento que rodea visualmente toda la animación). Para lienzo y WebGL es el elemento