【发布时间】:2016-12-05 07:13:09
【问题描述】:
我正在尝试制作一个必须将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 秒),这是可能的,但我找不到这样做的方法。
有人有想法吗?
【问题讨论】:
-
试试
requestAnimationFrame,但如果您已经获得 500 fps,为什么还需要更多? -
@Lucas Trzesniewski:您应该将此作为答案重新发布。
-
@drheart 有人已经 FGITWed 那个,但老实说,我对 OP 的 500 fps 数字很怀疑 ;)
-
一个游戏引擎最多需要60fps。
-
是的 500 fps 对于引擎来说确实太高了,但我正在运行的代码只是在屏幕上绘制 3 个矩形,所以如果我不能在一秒钟内渲染 5000 次会发生什么渲染很多大图和动画?
标签: javascript performance loops infinite