我在运行动画时遇到了麻烦。这是在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("!");
}
答案 0 :(得分:17)
您应该将函数引用传递给requestAnimationFrame
,而不是调用函数:
requestAnimationFrame(this.render);
由于您在this
内使用render
,因此您可能需要bind
:
requestAnimationFrame(this.render.bind(this));
您的版本导致堆栈溢出(该函数同步调用自身,直到调用堆栈已满)。