見出し画像

🎟p5.jsのdrawはタイマーで呼び出しているのか?

Drawがフレームレートに従って動いているのはわかって、javascriptで動いている限りはsetintervalに違いない。

p5.jsのコードはuncompressで全長は93040行。framefactoryというエイリアスでsetintervalが設定されている。

            var frameFactory = setInterval(function() {
             frames.push(makeFrame(fName + count, ext, cnv));
             count++;
           }, 1000 / fps); 

saveFramesという関数だが、注意書き見るとフレームの保存をするということで、いまいち本当にそうか確証が持てない。

setTimeoutで検索するとところどころ使われているよう。一回こっきりのメソッドの呼び出しは全部timeoutを使っているのかという感じ。useSetTimeoutという関数でpromiseとの干渉を避けているようだ。

P5.jsのdrawコールバックのしくみはタイマーを使っていますか?

P5.jsの`draw`コールバックはタイマーを直接使用していません。代わりに、P5.jsはブラウザの`requestAnimationFrame`を使用してアニメーションループを実装しています。`requestAnimationFrame`は、ブラウザが最適なタイミングで次の再描画を行うようにスケジュールするため、タイマーよりも効率的でスムーズなアニメーションを実現できます。

具体的には、P5.jsは以下のような流れで`draw`コールバックを呼び出します:

  1. P5.jsは最初のフレームを描画するために`requestAnimationFrame`を呼び出します。

  2. ブラウザが次の再描画タイミングに達すると、`draw`コールバックが呼び出されます。

  3. `draw`コールバック内のコードが実行され、描画が更新されます。

  4. 再度`requestAnimationFrame`が呼び出され、次のフレームのために同じプロセスが繰り返されます。

この方法により、P5.jsは一定のフレームレートを維持し、ブラウザの描画パフォーマンスを最大限に活用することができます。


お願い致します