--- title: Window.requestAnimationFrame() slug: Web/API/Window/requestAnimationFrame tags: - API - DOM - Metodă translation_of: Web/API/window/requestAnimationFrame ---
{{APIRef}}
Metoda Window.requestAnimationFrame()
informuje przeglądarkę o zamiarze wykonania animacji i żąda od przeglądarki wywołania określonej funkcji w celu odświeżenia animacji przed następnym odmalowaniem. Argumentem metody jest funkcja (callback) do wywołania przed następnym odmalowaniem (odświeżeniem kanwy).
requestAnimationFrame(),
jeżeli chcesz odmalować kolejną ramkę animacji.Należy wywołać tą metodą za każdym razem, gdy jesteś gotowy do odświeżenia swojej animacji na ekranie. Spowoduje to żądanie od przeglądarki wykonania twojej funkcji przed następnym odmalowaniem. Częstotliwość wykonywania funkcji wynosi zazwyczaj 60 razy na sekundę, jednakże według rekomendacji W3C w większości przeglądarek odpowiada częstotliwości odświeżania ekranu. Ta częstotliwość może zostać zredukowana do niższej wartości, gdy kod wykonywany jest w zakładce pozostającej w tle lub w ukrytej {{ HTMLElement("iframe") }} w celu poprawienia wydajności lub przedłużenia żywotności baterii.
Wywoływanej funkcji przekazywany jest pojedynczy argument {{domxref("DOMHighResTimeStamp")}}, który zawiera aktualny czas rozpoczęcia wykonywania tej funkcji, wstawionej do kolejki przez wywołanie requestAnimationFrame
. Wiele różnych funkcji wywołanych w jednej ramce otrzyma jednakże tę samą wartość znacznika czasu, niezależnie od czasu spędzonego wykonaniu obliczeń w poprzedzającej funkcji. Znacznik czasu jest liczbą dziesiętną wyrażoną w milisekundach z maksymalną dokładnością 1ms (1000 µs).
window.requestAnimationFrame(callback);
callback
requestAnimationFrame
uruchamiania skolejkowanych wcześniej funkcji.Wartość typu long
integer będącą identyfikatorem żądania, który unikalnie określa pozycję na liście funkcji do wykonania. Jest to niezerowa wartość, jednakże nie wolno przyjmować żadnych innych założeń dotyczących wartości tego identyfikatora. Możesz przekazać tę wartość do {{domxref("Window.cancelAnimationFrame()")}} aby anulować żądanie wywołania funkcji do odświeżenia.
var start = null; var element = document.getElementById("SomeElementYouWantToAnimate"); function step(timestamp) { if (!start) start = timestamp; var progress = timestamp - start; element.style.left = Math.min(progress/10, 200) + "px"; if (progress < 2000) { window.requestAnimationFrame(step); } } window.requestAnimationFrame(step);
Specyfikacja | Status | Komentarz |
---|---|---|
{{SpecName('HTML WHATWG', '#animation-frames', 'requestAnimationFrame')}} | {{Spec2('HTML WHATWG')}} | Brak zmian, zastępuje poprzednią. |
{{SpecName('RequestAnimationFrame', '#dom-windowanimationtiming-requestanimationframe', 'requestAnimationFrame')}} | {{Spec2('RequestAnimationFrame')}} | Wstępna definicja |
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Basic support | 10.0 {{property_prefix("webkit")}} 24.0 3 |
4.0 {{property_prefix("moz")}} 1 4 23 2 |
10.0 | {{compatversionunknown}} {{property_prefix("-o")}} 15.0 |
6.0 {{property_prefix("webkit")}} 6.1 |
return value | 23.0 | {{CompatGeckoDesktop("11.0")}} | 10.0 | {{compatversionunknown}} | {{compatversionunknown}} |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | 4.4 | 16.0 {{property_prefix("webkit")}} | {{CompatUnknown}} | {{CompatUnknown}} | 14.0 | 7.0 6.0 {{property_prefix("webkit")}} |
requestID return value |
{{CompatUnknown}} | {{CompatUnknown}} | {{CompatGeckoMobile("11.0")}} {{property_prefix("moz")}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
1 Przed Gecko 11.0 {{geckoRelease("11.0")}}, mozRequestAnimationFrame()
mogłobyć wywołane bez parametru. To nie jest dalej wspierane, gdyż raczej nie stanie się częścią standardu.
2 Parametrem wywoływanej funkcji jest {{domxref("DOMTimeStamp")}} zamiast {{domxref("DOMHighResTimeStamp")}} gdy stosuje się metodę z prefiksem. DOMTimeStamp
ma dokładność tylko do milisekundy, podczas gdy DOMHighResTimeStamp
ma minimalną dokładność dziesięciu mikrosekund. Co więcej, czas zerowy jest inny: DOMHighResTimeStamp
ma taki sam czas zerowy jak performance.now()
, lecz DOMTimeStamp
ma czas zerowy jak Date.now().
3 Poprawnym wywołaniem anulowania żądania w Chrome jest aktualnie window.cancelAnimationFrame()
. W starszych wersjach window.webkitCancelAnimationFrame()
& window.webkitCancelRequestAnimationFrame()
, które są przestarzałe, ale ciągle wspierane.
4 Wsparcie dla wersji z prefiksem zostało usunięte z Firefox 42.