无法获得正确的经过时间

时间:2013-08-25 13:32:00

标签: javascript date timer webgl

我正在尝试用JavaScript制作一个计时器,用于在WebGL中制作动画。这是使用Date类获取已用时间的代码。

var lastTime = Date.now();
var elapsed = 0;
var timeNow = Date.now();
function animate() {
    timeNow = Date.now();
    if(timeNow > lastTime) {
        elapsed = timeNow - lastTime;
        console.log(elapsed);
    }

    lastTime = timeNow;
} 

从window.requestAnimationFrame()回调中调用Animate。但这似乎产生了一个介于16和17之间的值。它永远不会超过20.什么事情发生了?

编辑:实际上,这是我的derp。经历需要+ =不=。谢谢抽象算法解释为什么它在16和17之间。:))

1 个答案:

答案 0 :(得分:1)

您每秒呼叫animate 60次,因为这可能是您在requestAnimationFrame中设置的(默认设置)。 1000毫秒/ 60帧= 16.xx毫秒。 因此动画每隔约16ms调用一次,这就是你所得到的。

if ( !window.requestAnimationFrame ) {

window.requestAnimationFrame = ( function() {

    return window.webkitRequestAnimationFrame ||
    window.mozRequestAnimationFrame ||
    window.oRequestAnimationFrame ||
    window.msRequestAnimationFrame ||
    function( /* function FrameRequestCallback */ callback, /* DOMElement Element */ element ) {

        window.setTimeout( callback, 1000 / 60 );   // so call it every ~16ms

    };

} )();

}