Я хочу сделать анимацию JavaScript за 5 секунд, чтобы завершить работу с помощью requestAnimationFrame()
.Можно ли считать 60 кадров в секунду для рендеринга браузера?
Я не хочу строгого и точного времени, поэтому все, что близко к 5 секундам в порядке, и я хочу, чтобы мой код был простым и читаемым, поэтому такие решения, как this, не будут работать для меня.
Вопрос в том, можно ли предположить, что большинство браузеров отображают страницу со скоростью 60 кадров в секунду? то есть, если я хочу, чтобы моя анимация заняла 5 секунд, я разделил ее на 60 * 5 = 300 шагов и с каждым вызовом функции draw()
, используя requestAnimationFrame()
, нарисуйте следующий шаг анимации. (Учитывая, что анимация довольно проста, просто перемещайте цветной div
.)
Кстати, я не могу использовать jQuery.
Edit: Позвольте мне перефразировать вопрос следующим образом: Do все браузеры «нормально» попробовать для отображения страницы на 60 кадр? Я хочу знать, если Chrome, например, отображает 75 кадров в секунду или Firefox, составляет 70 кадров в секунду.
(Нормальное состояние: процессор не сильно загружено, RAM не является полной, нет никаких сбоев хранения, помещение надлежащим образом вентилируемые и никто не пытается бросить свой ноутбук из окна.)
Нет, это даже небезопасно. Вы не представляете, как работает движок JavaScript. Даже на более низких языках программирования вы не можете действительно диктовать FPS точно так же, как циклы CPU/GPU всегда немного ударяются в зависимости от нагрузки на систему. –
«Маленькие» удары не имеют для меня значения. Пока скорость рендеринга остается между 55 и 65 кадрами в секунду, все в порядке. Кроме того, меня не волнуют некоторые экстремальные условия (например, очень высокая загрузка процессора). Предположим, что я запускаю свой код в нормальном состоянии с хорошим браузером. – Behdad
Если вы * предполагаете * стабильную систему, вам просто нужно убедиться, что вы закрываете свой цикл FPS на 60 кадров в секунду. Если вы не закрываете его, он будет работать быстрее и быстрее, пока он не сгорит все ресурсы. Нюанс, который вы наделите «Я просто хочу, чтобы он оставался между 55-60fps»; это проблема. Есть 1001 фактор, который может привести к тому, что механизм JavaScript снизит скорость FPS. Даже CSS/HTML-перерисовка может вызвать такое напряжение в браузере, что оно снизит производительность JS-движка. Просто имейте в виду, что вы не можете диктовать производительность компьютера, а просто просите его соблюдать, если это возможно. –