9

我在运行动画时遇到问题。这是里面var ob1 = function() {};。调用时,它会运行一段时间,然后出现错误Uncaught RangeError: Maximum call stack size exceeded。然而,同样的结构在对象之外运行没有问题。

/////////////// Render the scene ///////////////
this.render = function (){

        renderer.render(scene,camera);
        if(isControls == true) controls.update(clock.getDelta());
        this.animate();
        //console.log(true);
        requestAnimationFrame(this.render());
}

/////////////// Update objects ///////////////
this.animate = function (){
        console.log("!");
}
4

1 回答 1

24

您应该将函数引用传递给requestAnimationFrame,而不是调用该函数:

requestAnimationFrame(this.render);

由于您使用thisinside render,您可能需要bind

requestAnimationFrame(this.render.bind(this));

您的版本导致堆栈溢出(该函数同步调用自身,直到调用堆栈已满)。


于 2013-10-18T21:42:34.497 回答