Stronę tą wyświetlono już: 3867 razy
Wstęp
Omawiane wcześniej metody setTimer i setInterval mają swoje wady, które przy programowaniu gier są szczególnie dotkliwe. Głównym problemem jest synchronizacja zdarzeń. Jeżeli podpięte zdarzenie np. onkeydown, które wykonuje się niezależnie od animacji a jest związane z przemieszczaniem jakiegoś obiektu w to problemem jest synchronizacja tego zdarzenia z animacją. I tu z odsieczą biegnie na ratunek funkcja requestAnimationFrame, którą obsługują jedynie najnowsze przeglądarki. Funkcja ta umożliwia podanie na jej wejście innej funkcji, która zostanie wywołana w odpowiedzi na odświeżenie okna przeglądarki. I tu trzeba powiedzieć sobie, że przeglądarki internetowe odświeżają swoje okna (odrysowują je) z częstotliwością 60 [Hz] (60 razy na sekundę). Dzięki tej funkcji można więc zsynchronizować animację wraz z zdarzeniami, które mają na nie wpływ.
Przykład praktycznego zastosowania funkcji requestAnimationFrame
Teoria teorią, ale czas zakasać rękawy i pokazać jak funkcja requestAnimationFrame działa. Oto przykładowy kod:
Wynik działania powyższego skryptu widać poniżej (najedź kursorem myszki nad obszar canvas-u.