Кажется, что requestAnimationFrame
- это де-факто способ анимировать вещи сейчас. Для меня это работало очень хорошо, но сейчас я пытаюсь сделать анимацию на холсте, и мне было интересно: есть ли способ убедиться, что она работает с определенным fps? Я понимаю, что целью rAF является постоянная плавная анимация, и я могу рискнуть сделать мою анимацию порывистой, но сейчас она, кажется, работает на совершенно разных скоростях довольно произвольно, и мне интересно, есть ли способ борьбы что-то.
Я бы использовал setInterval
, но мне нужны оптимизаторы, которые предлагает rAF (особенно автоматически останавливается, когда вкладка находится в фокусе).
В случае, если кто-то хочет посмотреть мой код, это в значительной степени:
animateFlash: function() {
ctx_fg.clearRect(0,0,canvasWidth,canvasHeight);
ctx_fg.fillStyle = 'rgba(177,39,116,1)';
ctx_fg.strokeStyle = 'none';
ctx_fg.beginPath();
for(var i in nodes) {
nodes[i].drawFlash();
}
ctx_fg.fill();
ctx_fg.closePath();
var instance = this;
var rafID = requestAnimationFrame(function(){
instance.animateFlash();
})
var unfinishedNodes = nodes.filter(function(elem){
return elem.timer < timerMax;
});
if(unfinishedNodes.length === 0) {
console.log("done");
cancelAnimationFrame(rafID);
instance.animate();
}
}
Где Node.drawFlash() - это всего лишь некоторый код, который определяет радиус, основанный на переменной счетчика, а затем рисует круг.
Спасибо!