2016-01-23 5 views
0

У меня есть несколько HTML canvas элементов внутри различных директив AngularJS. Каждый из этих элементов анимируется с использованием requestAnimationFrame.Несколько анимаций холста HTML5

  1. Как насчет производительности? Можно ли назвать requestAnimationFrame для каждого canvas/directive или использует один service с callback функциями для всех функций рендеринга?
  2. Прежде чем содержимое может быть нарисовано, в функции рендеринга сделано много расчетов. Для каждого кадра эти вычисления необходимы. Должно ли это быть сделано до звонка requestAnimationFrame или это нормально иметь огромное количество вычислений после этого звонка?

ответ

2

requestAnimationFrame получит все запросы, выполненные для одного кадра, хотя я не уверен, каков будет порядок запросов. Я предполагаю, что они приходят в том же порядке, в каком они были запрошены.

Разница между несколькими запросами кадра или запросом одного кадра, вызывающим несколько функций, является предельной. Это был бы выбор стиля, а не выбор производительности.

Если вычисления необходимы для каждого кадра рендеринга, нет никакого преимущества, чтобы они запускались независимо от запроса кадра, поскольку вам нужно будет найти способ синхронизировать их, что добавит служебные данные. Если они не зависят от кадра, тогда было бы лучше сделать их с любой скоростью, которая обеспечит бесперебойную работу приложения.

+1

Согласно [некоторым тестам] (https://jsfiddle.net/c3wue8pf/), я сделал, кажется, что все raf даже смешаны в одном (все они имеют один и тот же аргумент времени). Вызывающий порядок, похоже, соблюдается в FF и Chrome. Когда кадр отбрасывается, весь вызов также отбрасывается. – Kaiido

+0

теперь, чтобы лучше соответствовать потребностям OP, возможно, он должен проверить, действительно ли нужно обновлять анимацию в каждом кадре: если некоторые из них выходят за пределы экрана, возможно, рендеринг можно опустить, а обновления будут выполняться во времени, а не инкрементный; если расчеты тяжелые, возможно, веб-работники могут помочь; и т.п. – Kaiido

Смежные вопросы