Фильтры и динамическая выгрузка растровых изображений

Избегайте использования фильтров, в том числе фильтров, обрабатываемых с помощью Pixel Bender.

Старайтесь не использовать такие эффекты, как фильтры, включая фильтры, обрабатываемые на мобильных устройствах с помощью Pixel Bender. При применении фильтра к экранному объекту среда выполнения создает два растровых изображения в памяти. Размер каждого растрового изображения равен размеру экранного объекта. Первое изображение создается в качестве растрированной версии экранного объекта, которая в свою очередь используется для создания второго растрового изображения с примененным фильтром.

Полноразмерное изображение
Два растровых изображения в памяти при применении фильтра

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

В проигрывателях Flash Player 10.1 и AIR 2.5 представлено новое поведение фильтра для всех платформ. Если фильтр не изменяется в течение 30 секунд или является скрытым либо закадровым, память, используемая растровым изображением без фильтра, освобождается.

Эта функция позволяет сэкономить половину памяти, используемой фильтром на всех платформах. Например, рассмотрим текстовый объект, к которому применен фильтр размытия. Текст в этом случае используется для простого оформления и не изменяется. По истечении 30 секунд растровое изображение без фильтра освобождается из памяти. Так же происходит, если текст скрыт в течение 30 секунд или находится вне экрана. При изменении одного из свойств текста растровое изображение без фильтра повторно создается в памяти. Эта функция называется динамической выгрузкой растрового изображения. Даже при использовании этих приемов по оптимизации проявляйте осторожность, работая с фильтрами; при их изменении по-прежнему будут интенсивно использоваться ресурсы центрального и графического процессоров.

Лучше всего использовать растровые изображения, созданные в средстве разработки, например в Adobe® Photoshop®, чтобы эмулировать фильтры, где это возможно. Не используйте динамические растровые изображения, созданные во время выполнения в ActionScript. Использование растровых изображений, созданных с помощью сторонних средств, помогает среде выполнения уменьшить загрузку центрального и графического процессоров, особенно когда свойства фильтра не изменяются со временем. По возможности применяйте к растровому изображению все необходимые эффекты в средстве разработки. Тогда оно будет отображаться в среде выполнения без дополнительной обработки, а значит, гораздо быстрее.