Why does this requestAnimationFrame setup fail to execute properly?

大憨熊 提交于 2019-12-01 12:48:18
window.requestAnimFrame(engine.renderCameras())

is not passing a function to requestAnimFrame, it is passing the return value of engine.renderCameras to requestAnimFrame. The return value is probably not a function and that's why you get this error.

window.requestAnimFrame(engine.renderCameras)

instead correctly passes a function reference, but then this [docs] inside renderCameras won't refer to engine. If you rely on that (which I assume based on the setup), you either have to pass a function calling engine.renderCameras properly:

window.requestAnimFrame(function(){
    engine.renderCameras();
});

or use .bind [docs] to set (and bind) this explicitly:

window.requestAnimFrame(engine.renderCameras.bind(engine));

Either way, you have to repeatedly call window.requestAnimFrame to get the next animation frame, which means you typically use a recursive function. For example:

window.requestAnimFrame(function render(){
    engine.renderCameras();
    window.requestAnimFrame(render);
});
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!