はじめに
この実験では、再帰と Window.requestAnimationFrame() メソッドを使って、アニメーションフレームを記録し、各フレームで提供されたコールバックを呼び出す関数を作成します。また、返されたオブジェクトの start と stop メソッドを使って、記録を手動で制御する方法も学びます。この実験は、JavaScript でアニメーションフレームを扱う方法と、より効率的で制御可能なアニメーションを作成する方法を理解するのに役立ちます。
この実験では、再帰と Window.requestAnimationFrame() メソッドを使って、アニメーションフレームを記録し、各フレームで提供されたコールバックを呼び出す関数を作成します。また、返されたオブジェクトの start と stop メソッドを使って、記録を手動で制御する方法も学びます。この実験は、JavaScript でアニメーションフレームを扱う方法と、より効率的で制御可能なアニメーションを作成する方法を理解するのに役立ちます。
アニメーションフレームを記録するには、以下の手順に従います。
node と入力します。running が true の場合、Window.requestAnimationFrame() を続けて呼び出します。これは提供されたコールバックを呼び出します。start と stop の 2 つのメソッドを持つオブジェクトを返します。start を暗黙的に呼び出すために、2 番目の引数 autoStart を省略します。アニメーションフレームを記録するには、次のコードを使用します。
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 };
};
コードの使用例:
const cb = () => console.log("Animation frame fired");
const recorder = recordAnimationFrames(cb);
// 各アニメーションフレームで 'Animation frame fired' をログに出力します
recorder.stop(); // ログ出力を停止します
recorder.start(); // 再開します
const recorder2 = recordAnimationFrames(cb, false);
// フレームの記録を開始するには、明示的に `start` を呼び出す必要があります
おめでとうございます!あなたはアニメーションフレームの記録の実験を完了しました。あなたの技術を向上させるために、LabEx でさらに多くの実験を行って練習することができます。