6

次のような一連のオブジェクトがあります。

Game.world.update()

requestAnimationFrame を使用して、この関数のフレームレートを決定したいと思います。

ただし、次のように実装すると:

World.prototype.update = function()
{
    requestAnimationFrame(this.update);
}

スコープがワールド オブジェクトからウィンドウ オブジェクトに変わります。requestAnimationFrame() を呼び出すときに、必要なスコープを維持するにはどうすればよいですか? 匿名関数などと関係があることは知っていますが、頭がわかりません。

4

3 に答える 3

11

通常のアプローチは、どこでも機能します:

World.prototype.update = function()
{
    var self = this;
    requestAnimationFrame(function(){self.update()});
}

またはES5の場合Function.prototype.bind互換性):

World.prototype.update = function()
{
    requestAnimationFrame(this.update.bind(this)});
}
于 2013-10-31T13:17:05.317 に答える