Sto giocando con lo requestAnimationFrame
ma ottengo animazioni molto a scatti in qualsiasi altro browser rispetto a Chrome.Ottieni un framerate alquanto stabile con requestAnimationFrame?
creo un oggetto come questo:
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));
}
};
}
In questo momento sto solo disegnando un singolo rettangolo su un elemento di tela e si muove intorno. È un'operazione molto leggera sul processore. Funziona senza intoppi in Chrome e quando registro la console il valore delta, è quasi costante intorno a ~ 17. Tuttavia, se faccio lo stesso in Firefox o Safari Ottengo i seguenti valori delta:
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
Sembra come se il browser non è sincronizzato con il display molto bene, e in tutti gli altri casi di Chrome, si farebbe ottenere animazioni più fluide utilizzando il vecchio metodo setTimeout con 16 ms come timeout di destinazione.
Qualcuno sa, se è possibile ottenere animazioni più fluide utilizzando requestAnimationFrame
in browser diversi da Chrome? Qualcuno è riuscito a ottenere valori delta più stabili rispetto a quelli pubblicati sopra in Firefox?
su che tipo di animazione stai lavorando? suggerire di fare un jsfiddle. – Raptor
Che ne dici di testare con 'performance.now()' piuttosto che 'new Date(). GetTime()'? Dubito che la risoluzione del timer sia nell'intervallo di 2 ms ... –
Al momento non ho niente, ho un'app che muove un po 'di div in giro, e sto cercando di spostare questa sorta di animazione in un elemento di tela. Ma in questo momento sto solo cercando di ottenere un'animazione piuttosto fluida. – acrmuui