Gram z urządzeniem requestAnimationFrame
, ale otrzymuję bardzo ostre animacje w dowolnej przeglądarce niż Chrome.Osiągnięcie nieco stabilnej szybkości klatek z requestAnimationFrame?
utworzyć obiekt tak:
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));
}
};
}
Teraz jestem po prostu rysunek jeden prostokąt na elemencie canvas i przesuwając go dookoła. Jest to bardzo lekka operacja na procesorze. Działa to całkiem sprawnie w Chrome, a kiedy konsola loguje wartość delta, prawie wynosi około ~ 17. Jednakże, jeśli zrobić to samo w Firefox lub Safari uzyskać następujące wartości 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
Wygląda to tak, jakby przeglądarka nie synchronizuje z wyświetlaczem bardzo ładnie, a we wszystkich innych przypadkach niż Chrome, można by uzyskać płynniejsze animacje za pomocą starej metody setTimeout z 16 ms jako docelowym limitem czasu.
Czy ktoś wie, czy możliwe jest uzyskanie płynniejszych animacji za pomocą requestAnimationFrame
w przeglądarkach innych niż Chrome? Czy ktoś osiągnął bardziej stabilne wartości delta niż te zamieszczone powyżej w Firefoksie?
z jakimi rodzajami animacji pracujesz? zaproponuj, aby zrobić jsfiddle. – Raptor
Co powiesz na testowanie z 'performance.now()' zamiast 'new Date(). GetTime()'? Wątpię, aby rozdzielczość timera mieściła się w przedziale 2ms ... –
Nic ciekawego w tej chwili, mam aplikację, która porusza sporo Diva i patrzę na przenoszenie tego rodzaju animacji do element canvas. Ale teraz próbuję uruchomić nieco płynną animację. – acrmuui