| HardCoder |
30.01.2012 11:18 |
Может, немного просветлит знания:
Цитата:
Цитата из "Оптимизация содержимого для платформы ADOBE® FLASH® PLATFORM".
Каждый цикл кадра состоит из двух фаз, разделенных на три части: события, событие enterFrame и визуализация.
Первая фаза состоит из двух частей (события и событие enterFrame), каждое из которых потенциально приводит к вызову кода. В первой части первой фазы поступают и отправляются события среды выполнения.
Этими событиями могут быть завершение или ход выполнения асинхронных операций, например при
загрузке данных по сети. В число этих событий также входит обработка команд пользователя. После отправки событий среда выполнения выполняет код в зарегистрированных прослушивателях. Если события отсутствуют, среда выполнения ожидает завершения фазы выполнения, не выполняя никаких действий. При отсутствии выполняемых действий среда выполнения никогда не увеличивает частоту кадров. Если событие происходит в других частях цикла выполнения, среда выполнения помещает их в очередь и отправляет в следующем кадре.
Второй частью первой фазы является событие enterFrame. Это событие отличается от остальных тем, что оно отправляется только один раз за кадр.
После отправки всех событий начинается фаза визуализации. На этом этапе среда выполнения вычисляет состояние всех видимых элементов и рисует их на экране. Затем этот процесс повторяется (подобно бегу спортсмена вокруг стадиона).
Примечание. Для событий, включающих свойство updateAfterEvent, можно выполнить немедленную
визуализацию, не дожидаясь этапа визуализации. Однако избегайте использования свойства
updateAfterEvent, если из-за него часто возникают проблемы с производительностью.
Проще всего представить, что цикл кадра состоит из двух фаз, равных по продолжительности. В этом случае половина каждого цикла кадра отводится для выполнения обработчиков событий и кода приложения, а половина — для визуализации. Однако на практике зачастую все выглядит иначе. Иногда для выполнения кода приложения требуется больше половины времени кадра, что приводит к увеличению первой части фазы и уменьшению второй части фазы, предназначенной для визуализации. И наоборот, при наличии сложного визуального содержимого, например фильтров и режимов наложения, для выполнения визуализации может потребоваться больше половины времени кадра. Так как фактическая длительность фаз может изменяться, то можно сказать, что цикл кадра «эластичен».
Если для выполнения обеих фаз (выполнение кода и визуализация) одного цикла кадра не хватает, среда выполнения изменяет частоту кадров. Длительность кадра увеличивается, поэтому возникает задержка перехода к следующему кадру. Например, если продолжительность цикла кадра составляет более одной тридцатой секунды, среда выполнения не поддерживает обновление экрана с частотой 30 кадров в секунду.
Замедление частоты кадров ощущается в падении производительности. В лучшем случае анимация не будет воспроизводится плавно. В худшем случае приложение зависает, а изображение пропадает.
|
Добавлено через 4 минуты
Обратите внимание на: "Если событие происходит в других частях цикла выполнения, среда выполнения помещает их в очередь и отправляет в следующем кадре".
|