Javascript计时器延迟

时间:2012-12-21 17:53:57

标签: javascript timer html5-canvas delay

我决定使用HTML5的画布,当然这意味着我将尝试编写一个乒乓球游戏。目前,我正在试图找出如何限制我的帧率。这在其他语言中相当容易,但找到一种延迟Javascript执行的方法似乎有点困难。

这是我到目前为止所做的:

while(true) {
    var begin = (new Date()).getTime();

    //Draw stuff to the canvas

    var end = (new Date()).getTime();
    if ((end-begin) < 33.333 ) {
        //delay (1000/(30-(end-begin)))
    }
}

显然,由于每个javascript引擎的执行方式,帧速率会大不相同,但我希望将最大帧速率限制为30FPS。我真的没有看到setTimeout()将如何完成此任务。最好的方法是什么?

1 个答案:

答案 0 :(得分:7)

JavaScript中没有delay / wait。您可以使用window.setTimeout之类的函数在经过一定时间后调用函数,例如:

window.setTimeout(function() {
    // do something interesting
}, 2000 /* but after 2000 ms */);

或者说你想每33毫秒(~30 fps)画一帧,你会像下面那样编码:

window.setInterval(function() {
    // paint my frame 
}, 33);