如何使用requestAnimationFrame来调用我的js原型?

时间:2012-05-22 07:38:10

标签: javascript

我想使用requestAnimationFrame无限制地调用我的methid动画。但是,我使用的方法似乎不起作用..这是我的代码..

<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>

它给了我以下错误..  未捕获的错误:TYPE_MISMATCH_ERR:DOM异常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

我如何使这项工作?

1 个答案:

答案 0 :(得分:26)

您必须考虑(调试)该上下文中self的含义。

使用局部变量绑定原始上下文:

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

或使用bind功能:

window.webkitRequestAnimationFrame( this.animate.bind(this) );