2011-12-21 14 views
6

Zrobiłem kilka testów na Chrome i requestAnimationFrame uzyskałem 61 fps podczas setTimeOut(callback, 0), uzyskałem 233 fps.
Jeśli ktoś chciałby mieć więcej niż 61 klatek na sekundę (czego nie jestem pewien co z tego), ale nie byłoby lepiej renderować za pomocą setTimeOut i po prostu użyć requestAnimationFrame, aby wykryć, kiedy okno straciło ostrość, a następnie zatrzymać limity czasu, aż ostrość powraca?setTimeOut daje 233 fps, podczas gdy requestAnimationFrame daje 61

I pytanie dodatkowe: czy istnieje inny sposób wykrywania, kiedy okno traci ostrość inne niż requestAnimationFrame nie wywołujące oddzwaniania?

Odpowiedz

12

animacja Zapytanie rama jest zsynchronizowany ze swoimi monitoruje częstotliwość odświeżania (nie ma sensu, aby animować więcej klatek niż w rzeczywistości widać na ekranie)

Oto odwołanie od docs Mozilla: https://developer.mozilla.org/en/DOM/Animations_using_MozBeforePaint

Kontrola liczby klatek na sekundę

MozBeforePaint nie będzie strzelał więcej niż ustaloną liczbę razy na sekundę, np. 50 lub 60. Jest to zamierzone, ponieważ nowoczesne systemy operacyjne i sprzętowe nie pozwalają przeglądarce wyświetlać więcej klatek niż ta. Ograniczenie liczby klatek na sekundę pozwala uniknąć marnowania czasu pracy, a tym samym oszczędzić użycie procesora i mocy oraz poprawić ogólną wydajność systemu.