requestAnimationFrame
のサンプルコードは大体こんな感じで、グローバルに定義した関数の中で自分自身を引数にしてrequestAnimationFrame
を呼ぶことで繰り返しをおこなっている。
function update() {
requestAnimationFrame(update);
console.log('update!');
}
update();
今回、あるクラスのメソッドから別のメソッドをrequestAnimationFrame
で繰り返したくていろいろ試したところ、以下のようにすれば上手くいくことわかった。
class Sample {
start() {
const that = this;
(function _update() {
requestAnimationFrame(_update);
that.update();
}());
}
update() {
console.log('update!');
}
}
const sample = new Sample();
sample.start();
こうすれば、Sample
クラスを継承したクラスはrequestAnimationFrame
を気にせずに、update
メソッドをオーバーライドして繰り返し処理を行うことができる。