RequestAnimationFrame - вирішення проблем JavaScript-анімації, Підручник HTML5
Користуватися ним слід таким чином:
Var requestAnimationFrame = requestAnimationFrame window. webkitRequestAnimationFrame
Window. mozRequestAnimationFrame window. oRequestAnimationFrame window. msRequestAnimationFrame ; function animate()
* Тут виробляються власне анімаційні дії */
Тут все просто: requestAnimationFrame встає на місце setTimeout, вигідно від нього відрізняючись тим, що допускає будь-які дії в функції зворотного виклику, що є першим параметром методу. Функція отримує поточний час як аргумент (у браузері Mozilla Firefox є спеціальний об'єкт mozAnimaO ionStartTime).
Другий (необов'язковий) аргумент requestAnimationFrame - об'єкт, пов'язаний з анімацією. Для canvas-анімації та перемальовки WebGL-сцен це буде елемент canvas.
Що це нам все дає? Та просто контроль над анімацією, точніше, над викликами функції, що її здійснює. Ми можемо зупиняти процес у той момент, коли вкладка браузера з анімацією невидима, можемо синхронізувати анімацію з різними подіями та процесами. Можемо заощаджувати, скорочуючи кількість викликів, що сприятливо позначиться на стані заряду батареї мобільного пристрою.
Специфікацією передбачено також метод cancelAnimationFrame, що припиняє виклики анімації:
Vav animation = requestAnimationFrame(funcnion(time)< animate();
Щоправда, реалізовано це поки що тільки в тому ж Mozilla Firefox. Сподіватимемося, що це скоро зміниться.