3

requestAnimationFrame を使用して、メソッド animate を無期限に呼び出したいと思います。ただし、私が使用しているアプローチは機能していないようです..ここに私のコードがあります..

<html>
    <head>
        <meta charset="utf-8">

        <script>
function object(){
    this.index = 0;
}

object.prototype.animate = function(){
    alert("vimak");
    window.webkitRequestAnimationFrame( self.animate);
}
me = new object();
me.animate();

        </script>

    </head>

    <body>
    </body>
</html>

それは私に次のエラーを与えます.. Uncaught Error: TYPE_MISMATCH_ERR: DOM Exception 17

これを修正するにはどうすればよいですか?

編集版

<html>
    <head>
        <meta charset="utf-8">

        <script>
function object(){
    this.index = 0;
}

object.prototype.animate = function(){

    var that = this;console.log(that);
    window.webkitRequestAnimationFrame( that.animate);
}
me = new object();
me.animate();

        </script>

    </head>

    <body>
    </body>
</html>

出力は

オブジェクト requestAnimationFrame.html:12 ウィンドウ requestAnimationFrame.html:12 キャッチされないエラー: TYPE_MISMATCH_ERR: DOM 例外 17

どうすればこれを機能させることができますか?

4

1 に答える 1

26

selfそのコンテキストで何を意味するかを考える (デバッグする) 必要があります。

ローカル変数を使用して元のコンテキストをバインドします。

var that = this;
window.webkitRequestAnimationFrame( function() { that.animate(); } );

または、次のbind関数を使用します。

window.webkitRequestAnimationFrame( this.animate.bind(this) );
于 2012-05-22T08:13:20.627 に答える