Introducción
En este laboratorio, exploraremos el uso de la recursividad y el método Window.requestAnimationFrame() para crear una función que pueda registrar los fotogramas de una animación y llamar a una devolución de llamada proporcionada en cada fotograma. También aprenderemos a controlar la grabación manualmente utilizando los métodos start y stop del objeto devuelto. Este laboratorio nos ayudará a entender cómo trabajar con los fotogramas de animación en JavaScript y cómo crear animaciones más eficientes y controladas.
Guía para registrar fotogramas de animación
Para registrar los fotogramas de una animación, siga los pasos siguientes:
- Abra la Terminal/SSH y escriba
nodepara comenzar a practicar la codificación. - Utilice la recursividad para llamar a la devolución de llamada proporcionada en cada fotograma de animación.
- Si
runningestrue, siga llamando aWindow.requestAnimationFrame(), que llama a la devolución de llamada proporcionada. - Para permitir el control manual de la grabación, devuelva un objeto con dos métodos
startystop. - Omita el segundo argumento,
autoStart, para llamar implícitamente astartcuando se invoque la función.
Utilice el siguiente código para registrar los fotogramas de una animación:
const recordAnimationFrames = (callback, autoStart = true) => {
let running = false,
raf;
const stop = () => {
if (!running) return;
running = false;
cancelAnimationFrame(raf);
};
const start = () => {
if (running) return;
running = true;
run();
};
const run = () => {
raf = requestAnimationFrame(() => {
callback();
if (running) run();
});
};
if (autoStart) start();
return { start, stop };
};
Uso de ejemplo del código:
const cb = () => console.log("Animation frame fired");
const recorder = recordAnimationFrames(cb);
// muestra 'Animation frame fired' en cada fotograma de animación
recorder.stop(); // detiene la visualización
recorder.start(); // comienza de nuevo
const recorder2 = recordAnimationFrames(cb, false);
// se debe llamar explícitamente a `start` para comenzar a registrar los fotogramas
Resumen
¡Felicidades! Has completado el laboratorio de Registro de Fotogramas de Animación. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.