【发布时间】:2015-07-04 08:22:33
【问题描述】:
我正在尝试了解有关 requestAnimationFrame 的一件事。
在下面的示例代码中,我运行了 60 次,这应该与您通常获得的典型每秒 60 帧相匹配,因此它应该持续 1 秒。但是,我故意通过调用浪费时间的函数将其拖出来。
显然,这需要更长的时间(在我的机器上大约需要 5 秒)。
问题是,我如何设置动画以使其持续固定的持续时间,例如 1 秒 - 大概这应该在此过程中跳过几帧?
虽然示例听起来很具体,但它具有更广泛的背景。我想创建具有设定持续时间而不是设定帧数的动画,例如淡入淡出或滑动,因为帧速率不是完全可预测的。这将匹配 CSS3 动画的行为。
谢谢
var i=0;
var start=new Date();
var end;
var counter=document.getElementById('counter');
var time=document.getElementById('time');
doit();
function doit() {
if(i>=60) {
end=new Date();
time.innerHTML=end.getTime() - start.getTime();
return;
}
wasteTime();
counter.innerHTML+=i+' ';
i++;
requestAnimationFrame(doit)
}
function wasteTime() {
for(var i=0;i<100000000;i++);
}
<p id="counter"></p>
<p id="time"></p>
【问题讨论】:
-
使用
setInterval代替您自己的时间。
标签: javascript animation