我试图创建一个必须将render
函数作为循环运行的视频游戏引擎。当这个功能完成后,我想再次运行它,然后再次运行......但是当我尝试这个时:
function render() {
// some code here which takes ~ 0.00015 second to run
}
while(1) { render(); }
浏览器会在几秒钟后冻结。所以我尝试了另一种方式:
function render() {
// some code here which takes ~ 0.00015 second to run
}
setTimeout(render);
// I've tried also
setTimeout(render, 1);
另外:
function render() {
// some code here which takes ~ 0.00015 second to run
setTimeout(render);
// OR
setTimeout(render, 1);
}
但是这个功能每秒只运行~500次,我想运行它〜5000次。如果我查看运行时间(0.00015秒),这是可能的,但我无法找到方法。
有没有人有想法?
答案 0 :(得分:3)
您要做的是以这种方式使用window.requestAnimationFrame
:
function render() {
window.requestAnimationFrame(render);
}
window.requestAnimationFrame(render);
您永远无法获得“无限”的呼叫量,这取决于您的硬件有多强。您还可以轻松计算“增量时间”(两次连续render
次呼叫之间经过的时间量),以便让任何用户无论硬件是什么都能顺利进行游戏动画。