Ich spiele mit der requestAnimationFrame
herum, aber ich bekomme sehr ruckartige Animationen in jedem anderen Browser als Chrome.Erreiche eine etwas stabile Framerate mit requestAnimationFrame?
Ich erstelle ein Objekt wie folgt aus:
var object = function() {
var lastrender = (new Date()).getTime();
var delta = 0;
return {
update: function() {
//do updates using delta value in calculations.
},
loop: function() {
var looptimestamp = (new Date()).getTime();
delta = looptimestamp - lastrender;
lastrender = looptimestamp;
this.update();
window.requestAnimationFrame(this.loop.bind(this));
}
};
}
Gerade jetzt ich gerade Zeichnung ein einzelnes Rechteck auf einem Canvas-Element und es bewegen. Es ist eine sehr leichte Operation auf dem Prozessor. Dies läuft in Chrome ziemlich flüssig, und wenn ich den Delta-Wert der Konsole protokolliere, ist er ungefähr gleich ~ 17. Allerdings, wenn ich das gleiche in Firefox oder Safari bekomme ich folgende Delta-Werte:
17-3-17-2-32-34-32-31-19-31-17-3-0-14-3-14-35-31-16-3-17-2 ... and so on
Es sieht aus, als ob der Browser mit dem Display ist nicht sehr schön synchronisiert werden, und in allen anderen Fällen als Chrome, würde man Erhalten Sie sanftere Animationen mit der alten setTimeout-Methode mit 16ms als Ziel-Timeout.
Weiß jemand, ob es möglich ist, glattere Animationen mit requestAnimationFrame
in anderen Browsern als Chrome zu erhalten? Hat es jemand geschafft, stabilere Delta-Werte zu erhalten als die oben in Firefox geposteten?
An welcher Art von Animation arbeiten Sie? schlage vor, ein Spiel zu machen. – Raptor
Wie wäre es mit "performance.now()" zu testen anstatt mit "new Date(). GetTime()"? Ich bezweifle, dass die Auflösung des Timers im Bereich von 2ms liegen würde ... –
Nichts interessant im Moment, ich habe eine App, die ziemlich viele Divs bewegt, und ich bin dabei, diese Art von Animation zu verschieben ein Leinwandelement Aber im Moment versuche ich nur eine etwas flüssige Animation zu bekommen. – acrmuui