我正在尝试使用系统时钟在 Javascript 中制作简单的动画。我想循环遍历一个数组,以便间隔[0],[1],[2]...
调用。500ms
使用上一个Stack Overflow 答案中的示例,我正在尝试使用此代码片段:
function timer(time,update,complete) {
var start = new Date().getTime();
var interval = setInterval(function() {
var now = (time*1000)-(new Date().getTime()-start);
if( now <= 0) {
clearInterval(interval);
complete();
}
else update(Math.floor(now/1000));
},500); // the smaller this number, the more accurate the timer will be
}
然后使用以下方法调用该函数:
timer(
5, // seconds
function(timeleft) { // called every step to update the visible countdown
console.log(3 - timeleft );
},
function() { // what to do after
console.log("Timer complete!");
}
);
这产生,0,1,2,3,"Timer Complete"
。但是,我无法弄清楚如何以 500 毫秒的间隔调用它。我试过调整数字,但我意识到我并不完全理解这个函数是如何工作的。是否可以对此进行调整,或者是否有一些硬编码的浏览器函数在 1s 间隔被调用?
我尝试将所有值更改为以下内容:
function timer(time,update,complete) {
var start = new Date().getTime();
var interval = setInterval(function() {
var now = (time*500)-(new Date().getTime()-start);
if( now <= 0) {
clearInterval(interval);
complete();
}
else update(Math.floor(now/500));
},500); // the smaller this number, the more accurate the timer will be
}
timer(
5, // seconds
function(timeleft) { // called every step to update the visible countdown
console.log(5 - timeleft );
},
function() { // what to do after
console.log("Timer complete!");
}
);
这现在产生:
2
3
4
5
Timer complete!
我认为是 500 毫秒的间隔,但我不确定。更改5
in的值5 - timeleft
也会对它的运行速度造成奇怪的影响。