この回答はGPT-4による自動生成回答です
JavaScriptにおいて、requestAnimationFrame
を使わずにループを作る方法としては、setInterval
やsetTimeout
を使う方法があります。しかし、これらの方法はブラウザの描画タイミングと同期しないため、requestAnimationFrame
を使うのが一般的です。
あなたのコードを見ると、Engine
クラスのupdate
メソッドを再定義していますが、これは一般的な設計とは異なります。代わりに、Engine
クラスにコールバック関数を渡すように設計すると、よりスマートになるでしょう。
以下にその例を示します。
Javascript
1class Engine {2 constructor(updateCallback) {3 this.updateCallback = updateCallback;4 }5 6 update() {7 this.updateCallback();8 requestAnimationFrame(this.update.bind(this));9 }10 11 start() {12 requestAnimationFrame(this.update.bind(this));13 }14}15 16const engine = new Engine(() => {17 console.log('HELLO');18});19 20engine.start();
このようにすることで、Engine
クラスのupdate
メソッドを再定義する必要がなくなります。また、Engine
クラスのインスタンスを作成する際に、更新処理を行うコールバック関数を渡すことができます。
0 コメント