Я пытаюсь понять одну вещь о requestAnimationFrame.requestAnimationFrame Fixed Duration
В приведенном ниже примере кода я запускаю что-то 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' Вместо с собственным временем. –