2

殺す時間があり、キャンバスオブジェクトをアニメーション化しようとしているため、独自の小さなキャンバスライブラリを作成しています。メソッドは現在そのように見えます。

proto.update = function () {


    for (var i = 0; i < this.objects.length; ++i) {

        this.objects[i].draw(this.context);
    }

    var self = this;

    requestAnimationFrame(self.update());
};

以前に使用したことがなく、 maximum callstack exceededrequestAnimationFrameというエラーが表示されます。

私はこのチュートリアルhttp://creativejs.com/resources/requestanimationframe/に従いましたが、間違いはなかったと確信しています。

私は何を間違えましたか?

4

1 に答える 1

0

に渡されるコールバック パラメータはrequestAnimationFrame、次の再描画の時間になったときに呼び出す関数への参照である必要があります (こちらのドキュメントを参照してください)。あなたのエラーは、関数名の後に括弧を含めたことです。これは、関数がすぐに実行されて再帰ループが発生することを意味します。

次のようにコードを更新してみてください。

proto.update = function () {


    for (var i = 0; i < this.objects.length; ++i) {

        this.objects[i].draw(this.context);
    }

    var self = this;

    // Pass the function reference don't call it
    requestAnimationFrame(self.update);
};
于 2013-04-05T00:06:14.530 に答える