Sterowanie fps za pomocą requestAnimationFrame?

To wygląda jakrequestAnimationFrame jest de facto sposobem animowania rzeczy teraz. W większości działało to całkiem nieźle, ale teraz próbuję zrobić kilka animacji na płótnie i zastanawiałem się: czy jest jakiś sposób, aby upewnić się, że działa z pewnym fps? Rozumiem, że celem rAF jest konsekwentnie płynne animowanie, i mogę narazić się na przerywanie animacji, ale teraz wydaje się, że działa dość drastycznie z różnymi prędkościami i zastanawiam się, czy jest sposób na walkę to jakoś.

UżyłbymsetInterval ale chcę optymalizacji, które oferuje rAF (szczególnie automatycznie zatrzymuje się, gdy karta jest skupiona).

W przypadku, gdy ktoś chce spojrzeć na mój kod, to prawie:

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();
    }
}

Gdzie Node.drawFlash () to tylko kod, który określa promień oparty na zmiennej licznika, a następnie rysuje okrąg.

questionAnswers(8)

yourAnswerToTheQuestion