flash.filtersGradientGlowFilter Класс GradientGlowFilter позволяет применять эффект градиентного свечения к экранным объектам.Позволяет добавлять эффект «Градиентное свечение». flash.filters:BitmapFilter Класс GradientGlowFilter позволяет применять эффект градиентного свечения к экранным объектам. Градиентное свечение — это реалистичное свечение с цветовым градиентом, которым можно управлять. Можно накладывать градиентное свечение по внутреннему или внешнему краю объекта или поверх объекта. Фильтр можно применять к любому экранному объекту (т.е. объекту, наследуемому от класса DisplayObject), например MovieClip, SimpleButton, TextField, Video, а также объектам BitmapData.

Выбор фильтра зависит от объекта, к которому требуется его применить:

  • Применить фильтр к экранным объектам можно с помощью свойства filters. При задании объекту свойства filters сам объект не изменяется, а фильтр можно удалить через свойство filters.
  • Для применения фильтров к объектам BitmapData следует пользоваться методом BitmapData.applyFilter(). При вызове applyFilter() для объекта BitmapData из исходного объекта BitmapData и объекта фильтра формируется изображение с применением фильтра.

При применении фильтра к визуализируемому объекту свойство cacheAsBitmap этого объекта принимает значение true. Если удалить все фильтры, будет восстановлено исходное значение cacheAsBitmap.

Этот фильтр поддерживает масштабирование сцены. Тем не менее, общее масштабирование, вращение и искажение не поддерживается. Если сам объект увеличен или уменьшен (т.е. если scaleX и scaleY имеют значение, отличное от 1,0), эффект фильтра не масштабируется. Он масштабируется, только когда пользователь применяет увеличение к самой сцене.

Фильтр не применяется, если полученное изображение превышает максимальные размеры. В AIR 1.5 и Flash Player 10 максимальный размер изображения составляет 8 191 пикселей в ширину или высоту, а общее количество пикселей не может превышать 16 777 215. (Т. е. если ширина изображения составляет 8 191 пикселя, его высота не может быть больше 2 048 пикселей.) В проигрывателе Flash Player 9 и более ранних версий, а также в AIR 1.1 и более ранних версий, это ограничение составляет 2 880 пикселей в высоту и 2 880 пикселей в ширину. Например, при масштабировании большого фрагмента ролика, к которому применен фильтр, фильтр будет снят, если получившееся изображение превысит максимальные размеры.

При выполнении кода, приведенного в примере ниже, будет нарисован квадрат, к которому будет применен фильтр градиентного скоса. Порядок выполнения кода таков:
  1. Импортируется требуемый класс.
  2. Объявляются глобальные переменные для определения квадрата и фильтра.
  3. Создается функция конструктора, которая выполняет следующее:
    • Вызывает метод draw(), который использует методы класса Graphics, доступные через свойство graphics спрайта для рисования квадрата.
    • Создает новый объект BitmapFilter с именем filter и назначает ему возвращаемое значение вызова getBitmapFilter(), определяющего фильтр.
    • Создает массив с именем myFilters и добавляет к нему filter.
    • Назначает myFilters свойству filters объекта GradientBevelFilterExample. В результате применяются все фильтры, обнаруженные в myFilters. В нашем случае это только один фильтр filter.
package { import flash.filters.BitmapFilter; import flash.filters.BitmapFilterQuality; import flash.filters.BitmapFilterType; import flash.filters.GradientGlowFilter; import flash.display.Sprite; public class GradientGlowFilterExample extends Sprite { private var bgColor:uint = 0xCCCCCC; private var size:uint = 80; private var offset:uint = 50; private var distance:Number = 0; private var angleInDegrees:Number = 45; private var colors:Array = [0xFFFFFF, 0xFF0000, 0xFFFF00, 0x00CCFF]; private var alphas:Array = [0, 1, 1, 1]; private var ratios:Array = [0, 63, 126, 255]; private var blurX:Number = 50; private var blurY:Number = 50; private var strength:Number = 2.5; private var quality:Number = BitmapFilterQuality.HIGH; private var type:String = BitmapFilterType.OUTER; private var knockout:Boolean = false; public function GradientGlowFilterExample() { draw(); var filter:BitmapFilter = getBitmapFilter(); var myFilters:Array = new Array(); myFilters.push(filter); filters = myFilters; } private function getBitmapFilter():BitmapFilter { return new GradientGlowFilter(distance, angleInDegrees, colors, alphas, ratios, blurX, blurY, strength, quality, type, knockout); } private function draw():void { graphics.beginFill(bgColor); graphics.drawRect(offset, offset, size, size); graphics.endFill(); } } }
GradientGlowFilter.ratiosflash.display.BitmapData.applyFilter()flash.display.DisplayObject.cacheAsBitmapflash.display.DisplayObject.filtersКласс GlowFilterGradientGlowFilter Инициализирует фильтр с заданными параметрами.distanceNumber4.0Расстояние смещения свечения. angleNumber45Угол в градусах. Действительны значения от 0 до 360. colorsArraynullМассив цветов, задающий градиент. Например, красный задается значением 0xFF0000, голубой — значением 0x0000FF и т.д. alphasArraynullМассив значений альфа-прозрачности для соответствующих цветов в массиве colors. Действительные значения для каждого из элементов массива — от 0 до 1. Например, при задании значения 0,25 устанавливается 25% альфа-прозрачность. ratiosArraynullМассив значений распределения цветов. Действительны значения от 0 до 255. Это значение определяет процент ширины, на которой цвет представлен на 100%. blurXNumber4.0Степень размытия по горизонтали. Действительны значения от 0 до 255. Размытие со значением 1 или менее означает, что исходное изображение копируется как есть. Значения, являющиеся степенью 2 (т. е. 2, 4, 8, 16 и 32), оптимизируются и выполняются быстрее, чем остальные. blurYNumber4.0Степень размытия по вертикали. Действительны значения от 0 до 255. Размытие со значением 1 или менее означает, что исходное изображение копируется как есть. Значения, являющиеся степенью 2 (т. е. 2, 4, 8, 16 и 32), оптимизируются и выполняются быстрее, чем остальные. strengthNumber1Степень вдавливания или нанесения. Чем выше значение, тем более насыщен цвет тени и тем сильнее контраст между свечением и фоном. Действительны значения от 0 до 255. Чем больше значение, тем более насыщен цвет. Значение 0 означает, что фильтр не применяется. qualityint1Заданное число применений фильтра. Используйте константы BitmapFilterQuality:
  • BitmapFilterQuality.LOW
  • BitmapFilterQuality.MEDIUM
  • BitmapFilterQuality.HIGH

Подробные сведения см. в описании свойства quality.

typeStringinnerРасположение эффекта фильтра. Возможными значениями являются константы flash.filters.BitmapFilterType:
  • BitmapFilterType.OUTER — свечение по внешнему краю объекта.
  • BitmapFilterType.INNER — свечение по внутреннему краю объекта.
  • BitmapFilterType.FULL — свечение по всему объекту.
knockoutBooleanfalseОпределяет, применяется ли к объекту эффект выбивки. Эффект выбивки делает заливку объекта прозрачной и выявляет цвет фона документа. Значение true указывает на наличие эффекта выбивки. По умолчанию задано значение false (без эффекта выбивки).
Инициализирует фильтр с заданными параметрами.
clone Возвращает копию данного объекта фильтра.Новый экземпляр GradientGlowFilter с теми же свойствами, что и оригинальный экземпляр GradientGlowFilter. flash.filters:BitmapFilter Возвращает копию данного объекта фильтра. alphas Массив значений альфа-прозрачности для соответствующих цветов в массиве colors.ArrayМассив при назначении принимает значение null. TypeErrorTypeErrorМассив значений полупрозрачности. Массив значений альфа-прозрачности для соответствующих цветов в массиве colors. Действительные значения для каждого из элементов массива — от 0 до 1. Например, при задании значения 0,25 устанавливается 25% альфа-прозрачность.

Свойство alphas невозможно изменить, непосредственно поменяв его значения. Вместо этого следует внести изменения в ссылку на alphas, а затем задать alphas для ссылки.

Свойства colors, alphas и ratios связаны между собой. Первый элемент массива colors соответствует первому элементу массива alphas и массива ratios и т.д.

GradientGlowFilter.colorsGradientGlowFilter.ratios
angle Угол в градусах.Number Угол в градусах. Действительны значения от 0 до 360. По умолчанию — 45.

Значение угла представляет угол, под которым падает свет из предполагаемого источника, и определяет расположение эффекта относительно объекта. Если distance равно 0, эффект не смещается относительно объекта и, следовательно, свойство angle никак не влияет на объект.

blurX Степень размытия по горизонтали.Number Степень размытия по горизонтали. Действительны значения от 0 до 255. Размытие со значением 1 или менее означает, что исходное изображение копируется как есть. По умолчанию используется значение 4. Значения, являющиеся степенью 2 (т. е. 2, 4, 8, 16 и 32), оптимизируются и выполняются быстрее, чем остальные. blurY Степень размытия по вертикали.Number Степень размытия по вертикали. Действительны значения от 0 до 255. Размытие со значением 1 или менее означает, что исходное изображение копируется как есть. По умолчанию используется значение 4. Значения, являющиеся степенью 2 (т. е. 2, 4, 8, 16 и 32), оптимизируются и выполняются быстрее, чем остальные. colors Массив цветов, задающий градиент.ArrayМассив при назначении принимает значение null. TypeErrorTypeError Массив цветов, задающий градиент. Например, красный задается значением 0xFF0000, голубой — значением 0x0000FF и т.д.

Свойство colors нельзя изменить, непосредственно поменяв его значения. Вместо этого следует внести изменения в ссылку на colors, а затем задать colors для ссылки.

Свойства colors, alphas и ratios связаны между собой. Первый элемент массива colors соответствует первому элементу массива alphas и массива ratios и т.д.

GradientGlowFilter.alphasGradientGlowFilter.ratios
distance Расстояние смещения свечения.Number Расстояние смещения свечения. Значением по умолчанию является 4. knockout Определяет, применяется ли к объекту эффект выбивки.Boolean Определяет, применяется ли к объекту эффект выбивки. Эффект выбивки делает заливку объекта прозрачной и выявляет цвет фона документа. Значение true указывает на наличие эффекта выбивки. По умолчанию задано значение false (без эффекта выбивки). quality Заданное число применений фильтра.int Заданное число применений фильтра. Значение по умолчанию — BitmapFilterQuality.LOW, что эквивалентно однократному применению фильтра. Значение BitmapFilterQuality.MEDIUM применяет фильтр дважды; значение BitmapFilterQuality.HIGH — трижды. Фильтры с более низкими значениями выполняются быстрее.

Для большинства приложений достаточно значения quality на уровне «low» («низкое»), «medium» («среднее») или «high» («высокое»). Хотя можно использовать дополнительные числовые значения до 15 для получения разнообразных эффектов, более высокие значения выполняются дольше. Вместо увеличения значения quality можно просто увеличить значения свойств blurX и blurY. Это даст похожий эффект, а выполнение будет происходить быстрее.

flash.filters.BitmapFilterQuality
ratios Массив пропорций распределения цвета для соответствующих цветов в массиве colors.ArrayМассив при назначении принимает значение null. TypeErrorTypeError Массив пропорций распределения цвета для соответствующих цветов в массиве colors. Действительны значения от 0 до 255.

Свойство ratios нельзя изменить, непосредственно поменяв его значения. Вместо этого следует внести изменения в ссылку на ratios, а затем задать ratios для ссылки.

Свойства colors, alphas и ratios связаны между собой. Первый элемент массива colors соответствует первому элементу массива alphas и массива ratios и т.д.

Представьте градиентное свечение как свечение, исходящее из центра объекта (если значение distance равно 0) и состоящее из цветовых полос, переходящих друг в друга. Первый цвет в массиве colors — это самый удаленный от центра цвет свечения. Последний цвет — самый близкий к центру свечения.

Каждое значение в массиве ratios задает положение цвета на линии радиуса градиента, где 0 — это самая удаленная от центра точка градиента, а 255 — самая близкая к центру. Значения пропорций могут варьироваться от 0 до 255 пикселей в порядке возрастания, например [0, 64, 128, 200, 255]. Значения от 0 до 128 отображаются во внешней области свечения. Значения от 129 до 255 отображаются во внутренней области свечения. В зависимости от значений пропорций цветов и значения type фильтра цвета фильтра могут замутняться под влиянием объекта, к которому применяется фильтр.

В следующем коде и изображении рассматривается фильтр, примененный к фрагменту ролика в форме черного круга, тип которого full. В учебных целях первый цвет в массиве colors сделаем розовым, он будет иметь значение alpha 1, чтобы его было видно на белом фоне. (На практике вы, скорее всего, не захотите, чтобы первый цвет отображался таким образом). Последний цвет массива, желтый, замутняет черный круг, к которому применяется фильтр:

	var colors:Array = [0xFFCCFF, 0x0000FF, 0x9900FF, 0xFF0000, 0xFFFF00];
	var alphas:Array = [1, 1, 1, 1, 1];
	var ratios:Array = [0, 32, 64, 128, 225];
	var myGGF:GradientGlowFilter = new GradientGlowFilter(0, 0, colors, alphas, ratios, 50, 50, 1, 2, "full", false);
	

Для получения ровного слияния с фоном документа при задании значения type outer или full нужно, чтобы первый цвет массива совпадал с цветом фона документа или чтобы значение альфа-канала первого цвета было 0. В любом случае, фильтр будет плавно накладываться на фон.

Всего два небольших изменения в этом коде могут дать совершенно иной эффект свечения, даже при таких же массивах ratios и colors. Установите значение альфа-канала 0 для первого цвета массива, чтобы фильтр плавно накладывался на белый фон документа, а свойству type назначьте значение outer или inner. Сравните результат с рисунками ниже.

Следует помнить, что распределение цветов в градиенте зависит от значений свойств blurX, blurY, strength и quality, а также от значений ratios.

GradientGlowFilter.colorsGradientGlowFilter.alphasflash.display.Graphics.beginGradientFill()
strength Степень вдавливания или нанесения.Number Степень вдавливания или нанесения. Чем выше значение, тем более насыщен цвет тени и тем сильнее контраст между свечением и фоном. Действительны значения от 0 до 255. Значение 0 означает, что фильтр не применяется. Значением по умолчанию является 1. type Расположение эффекта фильтра.StringСтрока при назначении принимает значение null. TypeErrorTypeError Расположение эффекта фильтра. Возможными значениями являются константы flash.filters.BitmapFilterType:
  • BitmapFilterType.OUTER — свечение по внешнему краю объекта.
  • BitmapFilterType.INNER — свечение по внутреннему краю объекта.
  • BitmapFilterType.FULL — свечение по всему объекту.
ColorMatrixFilter Класс ColorMatrixFilter позволяет применить матричное преобразование 4 x 5 в цветовой схеме RGBA с альфа-каналом к каждому пикселю входного изображения для получения результата с новым набором значений в схеме RGBA и альфа-канала.Применяет преобразование матрицы цветов к значениям цвета и полупрозрачности каждого пикселя. flash.filters:BitmapFilter Класс ColorMatrixFilter позволяет применить матричное преобразование 4 x 5 в цветовой схеме RGBA с альфа-каналом к каждому пикселю входного изображения для получения результата с новым набором значений в схеме RGBA и альфа-канала. Благодаря этому можно изменять насыщенность, оттенок и яркость альфа-канала и применять другие эффекты. Фильтр можно применять к любому экранному объекту (т. е. объекту, наследуемому от класса DisplayObject), например MovieClip, SimpleButton, TextField, Video, а также объектам BitmapData.

Примечание. В значениях цветовой схемы RGBA наиболее значимый байт является значением красного канала, за которым следуют зеленый, голубой и альфа-канал.

Новая цветовая матрица создается с использованием синтаксиса new ColorMatrixFilter(). Выбор фильтра зависит от объекта, к которому требуется его применить:

  • Если фильтр применяется к фрагментам ролика, текстовым полям, кнопкам или видео, следует использовать свойство filters (наследуемое от класса DisplayObject). При задании объекту свойства filters сам объект не изменяется, а фильтр можно удалить через свойство filters.
  • Для применения фильтров к объектам BitmapData следует пользоваться методом BitmapData.applyFilter(). При вызове applyFilter() для объекта BitmapData из исходного объекта BitmapData и объекта фильтра формируется изображение с применением фильтра.

При применении фильтра к визуализируемому объекту свойство cacheAsBitmap этого объекта принимает значение true. Если удалить все фильтры, будет восстановлено исходное значение cacheAsBitmap.

Фильтр не применяется, если полученное изображение превышает максимальные размеры. В AIR 1.5 и Flash Player 10 максимальный размер изображения составляет 8 191 пикселей в ширину или высоту, а общее количество пикселей не может превышать 16 777 215. (Т. е. если ширина изображения составляет 8 191 пикселя, его высота не может быть больше 2 048 пикселей.) В проигрывателе Flash Player 9 и более ранних версий, а также в AIR 1.1 и более ранних версий, это ограничение составляет 2 880 пикселей в высоту и 2 880 пикселей в ширину. Например, при масштабировании большого фрагмента ролика, к которому применен фильтр, фильтр будет снят, если получившееся изображение достигнет максимальных размеров.

В следующем примере показано, как различные фильтры цветовой матрицы применяются к файлу изображения. Конструктор фильтров четыре раза вызывает buildChild() для загрузки и отображения четырех экземпляров изображения. При первом вызове buildChild() аргумент принимается за null, и к первому экземпляру фильтр не применяется. При каждом последующем вызове buildChild() аргумент принимает значение функции, применяющей разные фильтры цветовых матриц к каждому последующему экземпляру изображения.

Функция buildChild() создает новый объект Loader и присваивает ему имя loader. При каждом вызове buildChild() нужно назначать объекту Loader прослушиватель событий, который будет регистрировать события complete, обрабатываемые функцией, которая передается к buildChild().

Функции applyRed(), applyGreen() и applyBlue() применяют к массиву matrix разные значения для получения различных эффектов.

Примечание. Для оптимального результата рекомендуется использовать изображения шириной около 80 пикселей. Имя и расположение файла с изображением должны совпадать со значением, которое передается свойству url. Например, значение, передаваемое свойству url в данном примере, указывает на файл с именем Image.jpg, который хранится в том же каталоге, что и SWF-файл.

package { import flash.display.DisplayObject; import flash.display.Loader; import flash.display.Sprite; import flash.events.Event; import flash.events.IOErrorEvent; import flash.filters.ColorMatrixFilter; import flash.net.URLRequest; public class ColorMatrixFilterExample extends Sprite { private var size:uint = 140; private var url:String = "Image.jpg"; public function ColorMatrixFilterExample() { buildChild(null); buildChild(applyRed); buildChild(applyGreen); buildChild(applyBlue); } private function buildChild(loadHandler:Function):void { var loader:Loader = new Loader(); loader.x = numChildren * size; loader.y = size; loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); if (loadHandler != null) { loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadHandler); } var request:URLRequest = new URLRequest(url); loader.load(request); addChild(loader); } private function applyRed(event:Event):void { var child:DisplayObject = DisplayObject(event.target.loader); var matrix:Array = new Array(); matrix = matrix.concat([1, 0, 0, 0, 0]); // red matrix = matrix.concat([0, 0, 0, 0, 0]); // green matrix = matrix.concat([0, 0, 0, 0, 0]); // blue matrix = matrix.concat([0, 0, 0, 1, 0]); // alpha applyFilter(child, matrix); } private function applyGreen(event:Event):void { var child:DisplayObject = DisplayObject(event.target.loader); var matrix:Array = new Array(); matrix = matrix.concat([0, 0, 0, 0, 0]); // red matrix = matrix.concat([0, 1, 0, 0, 0]); // green matrix = matrix.concat([0, 0, 0, 0, 0]); // blue matrix = matrix.concat([0, 0, 0, 1, 0]); // alpha applyFilter(child, matrix); } private function applyBlue(event:Event):void { var child:DisplayObject = DisplayObject(event.target.loader); var matrix:Array = new Array(); matrix = matrix.concat([0, 0, 0, 0, 0]); // red matrix = matrix.concat([0, 0, 0, 0, 0]); // green matrix = matrix.concat([0, 0, 1, 0, 0]); // blue matrix = matrix.concat([0, 0, 0, 1, 0]); // alpha applyFilter(child, matrix); } private function applyFilter(child:DisplayObject, matrix:Array):void { var filter:ColorMatrixFilter = new ColorMatrixFilter(matrix); var filters:Array = new Array(); filters.push(filter); child.filters = filters; } private function ioErrorHandler(event:IOErrorEvent):void { trace("Unable to load image: " + url); } } }
flash.display.BitmapData.getPixel()flash.display.BitmapData.applyFilter()flash.display.DisplayObject.filtersflash.display.DisplayObject.cacheAsBitmapColorMatrixFilter Инициализирует новый экземпляр ColorMatrixFilter с заданными параметрами.matrixArraynullМассив из 20 элементов, формирующий матрицу размером 4 x 5. Инициализирует новый экземпляр ColorMatrixFilter. Инициализирует новый экземпляр ColorMatrixFilter с заданными параметрами. clone Возвращает копию данного объекта фильтра.Новый экземпляр ColorMatrixFilter с теми же свойствами, что и оригинал. flash.filters:BitmapFilter Возвращает копию данного объекта фильтра. matrix Массив из 20 элементов для преобразования цвета 4 x 5.ArrayМассив при назначении принимает значение null. TypeErrorTypeError Массив из 20 элементов для преобразования цвета 4 x 5. Свойство matrix нельзя изменить, непосредственно изменив его значение (например, myFilter.matrix[2] = 1;). Вместо этого нужно внести изменения в ссылку на массив и сбросить значение.

Фильтр цветовой матрицы выделяет в каждом пикселе исходного изображения красный, зеленый, голубой и альфа-компонент, которые соответственно обозначаются srcR, srcG, srcB и srcA. Для вычисления результата по каждому из четырех каналов значение каждого пикселя изображения умножается на значение из матрицы преобразования. К каждому результату при необходимости можно добавить смещение от -255 до 255 (пятый элемент в каждом ряду матрицы). Фильтр собирает все цветовые компоненты в единый пиксель и записывает результат. В следующей формуле элементы от a[0] до a[19] соответствуют записям от 0 до 19 в массиве из 20 элементов, который передается свойству matrix:

	redResult   = (a[0]  ~~ srcR) + (a[1]  ~~ srcG) + (a[2]  ~~ srcB) + (a[3]  ~~ srcA) + a[4]
	greenResult = (a[5]  ~~ srcR) + (a[6]  ~~ srcG) + (a[7]  ~~ srcB) + (a[8]  ~~ srcA) + a[9]
	blueResult  = (a[10] ~~ srcR) + (a[11] ~~ srcG) + (a[12] ~~ srcB) + (a[13] ~~ srcA) + a[14]
	alphaResult = (a[15] ~~ srcR) + (a[16] ~~ srcG) + (a[17] ~~ srcB) + (a[18] ~~ srcA) + a[19]
	

Единица в значении каждого из цветов означает, что 100% указанного канала передается на выход, при этом значение цветового канала сохраняется.

Вычисления производятся над значениями цветов до умножения. Если графика на входе состоит из перемноженных значений цветов, эти значения для данной операции автоматически переводятся в неперемноженные.

Доступны два режима оптимизации:

Только альфа-канал. При передаче фильтру матрицы, которая корректирует только альфа-компонент, как показано в примере, фильтр оптимизирует изображение:

	    1 0 0 0 0
	    0 1 0 0 0
	    0 0 1 0 0
	    0 0 0 N 0  (where N is between 0.0 and 1.0)
	

Ускоренный вариант. Доступен только на процессорах с аппаратным ускорением SSE/AltiVec, например Intel® Pentium® 3 и выше или Apple® G4 и выше. Ускорение используется, когда множители лежат в диапазоне от -15,99 до 15,99, а слагаемые a[4], a[9], a[14] и a[19] – в диапазоне от -8000 до 8000.

DisplacementMapFilter Класс DisplacementMapFilter использует значения пикселей заданного объекта BitmapData (так называемого изображения схемы искривления) для искривления замещения объекта.Смещает исходный объект, к которому применен фильтр. flash.filters:BitmapFilter Класс DisplacementMapFilter использует значения пикселей заданного объекта BitmapData (так называемого изображения схемы искривления) для искривления замещения объекта. Этот фильтр можно использовать для применения эффекта деформации или крапинок к любому объекту, наследуемому от класса DisplayObject, например MovieClip, SimpleButton, TextField и Video, а также к объектам BitmapData.

Выбор фильтра зависит от объекта, к которому требуется его применить:

  • Применить фильтры к экранному объекту можно с помощью свойства filters этого объекта. При задании объекту свойства filters сам объект не изменяется, а фильтр можно удалить через свойство filters.
  • Для применения фильтров к объектам BitmapData следует пользоваться методом BitmapData.applyFilter(). При вызове applyFilter() для объекта BitmapData из исходного объекта BitmapData и объекта filter формируется изображение с применением фильтра.

При применении фильтра к экранному объекту свойство cacheAsBitmap этого объекта принимает значение true. Если удалить все фильтры, будет восстановлено исходное значение cacheAsBitmap.

В фильтре используется следующая формула:

dstPixel[x, y] = srcPixel[x + ((componentX(x, y) - 128) ~~ scaleX) / 256, y + ((componentY(x, y) - 128) ~~scaleY) / 256)

где componentX(x, y) получает значение цвета свойства componentX от свойства mapBitmap при (x — mapPoint.x ,y — mapPoint.y).

Изображение карты, используемое фильтром, масштабируется по размеру сцены. Оно не масштабируется при масштабировании самого объекта.

Этот фильтр поддерживает масштабирование сцены. Тем не менее, общее масштабирование, повороты и искажение не поддерживаются. Если сам объект увеличен или уменьшен (т. е. если свойства scaleX и scaleY принимают значение, отличное от 1,0), фильтр не масштабируется. Он масштабируется, только когда пользователь применяет увеличение к самой сцене.

При выполнении кода, приведенного в примере ниже, будет нарисован квадрат с радиальной градиентной заливкой, создано текстовое поле, создан объект BitmapData, а к объекту DisplacementMapFilterExample будет применен фильтр смещения карты. Порядок выполнения кода таков:
  1. Класс определяет переменные цвета фона, отметки текстового поля, размера и смещения, которые будут использоваться в различных функциях.
  2. Функция конструктора вызывает метод draw(), использующий класс Graphics для отрисовки квадрата с радиальной градиентной заливкой. Следует помнить, что graphics — это свойство объекта DisplacementMapFilterExample, являющегося расширением класса Sprite.
  3. Функция конструктора вызывает метод createLabel(), который создает текстовое поле со значением labelText и добавляет его к списку отображения.
  4. Функция конструктора вызывает метод createFilter(), который выполняет следующие действия:
    • Создает переменную с именем filter для объекта filter.
    • Вызывает метод getDisplacementMapFilter() и назначает возвращаемое им значение переменной filter.
    • Передает filter свойству filters объекта DisplacementFilterExample (основной класс).
  5. Метод getBitmapFilter() создает объект BitmapData с именем mapBitmap и назначает его результатам метода createBitmapData(). Объект mapBitmap, как и другие переменные, определяет новый фильтр смещения изображения карты.
  6. Метод createBitmapData() создает новый объект BitmapData, основанный на текущем содержимом объекта DisplacementMapFilterExample. Он создает новое растровое изображение на основе bitmapData и добавляет его к сцене.
package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.BitmapDataChannel; import flash.display.GradientType; import flash.display.SpreadMethod; import flash.display.Sprite; import flash.filters.BitmapFilter; import flash.filters.DisplacementMapFilter; import flash.filters.DisplacementMapFilterMode; import flash.geom.Matrix; import flash.geom.Point; import flash.text.TextField; public class DisplacementMapFilterExample extends Sprite { private var bgColor:uint = 0xFFCC00; private var size:uint = 200; private var offset:uint = 90; private var labelText:String = "Watch the text bend with the displacement map"; public function DisplacementMapFilterExample() { draw(); createLabel(); createFilter(); } private function createFilter():void { var filter:BitmapFilter = getBitmapFilter(); filters = new Array(filter); } private function getBitmapFilter():BitmapFilter { var mapBitmap:BitmapData = createBitmapData(); var mapPoint:Point = new Point(0, 0); var channels:uint = BitmapDataChannel.RED; var componentX:uint = channels; var componentY:uint = channels; var scaleX:Number = 0.5; var scaleY:Number = -30; var mode:String = DisplacementMapFilterMode.CLAMP; var color:uint = 0; var alpha:Number = 0; return new DisplacementMapFilter(mapBitmap, mapPoint, componentX, componentY, scaleX, scaleY, mode, color, alpha); } private function draw():void { var matrix:Matrix = new Matrix(); matrix.createGradientBox(size, size); graphics.beginGradientFill(GradientType.RADIAL, [0xFF0000, 0x0000FF], [100, 100], [55, 200], matrix, SpreadMethod.PAD); graphics.drawRect(0, 0, size, size); } private function createBitmapData():BitmapData { var bitmapData:BitmapData = new BitmapData(size, size, true, bgColor); bitmapData.draw(this, new Matrix()); var bitmap:Bitmap = new Bitmap(bitmapData); bitmap.x = size; addChild(bitmap); return bitmapData; } private function createLabel():void { var tf:TextField = new TextField(); tf.text = labelText; tf.y = offset; tf.width = size; addChild(tf); } } }
flash.display.BitmapData.applyFilter()flash.display.DisplayObject.filtersflash.display.DisplayObject.cacheAsBitmapDisplacementMapFilter Инициализирует экземпляр DisplacementMapFilter с заданными параметрами.mapBitmapflash.display:BitmapDatanullОбъект BitmapData, содержащий данные карты замещения. mapPointflash.geom:PointnullЗначение, содержащее смещение левого верхнего угла целевого экранного объекта из левого верхнего угла изображения карты. componentXuint0Указывает цветовой канал, который следует использовать в изображении карты для замещения результата x. Возможными значениями являются константы BitmapDataChannel: componentYuint0Указывает цветовой канал, который следует использовать в изображении схемы для замещения результата y. Возможными значениями являются константы BitmapDataChannel: scaleXNumber0.0Множитель, с помощью которого масштабируется результат замещения x, полученного в ходе вычисления схемы. scaleYNumber0.0Множитель, с помощью которого масштабируется результат y замещения, полученного в ходе вычисления карты. modeStringwrapРежим фильтра. Возможными значениями являются константы DisplacementMapFilterMode: coloruint0Задает цвет, используемый при смещениях, выходящих за пределы границ. Допустимый диапазон смещений — от 0,0 до 1,0. Этот параметр используется, если для mode установлено значение DisplacementMapFilterMode.COLOR. alphaNumber0.0Задает альфа-значение, используемое при смещениях, выходящих за пределы границ. Указывается в виде нормализованного значения от 0,0 до 1,0. Например, при 0,25 устанавливается 25-процентная прозрачность. Этот параметр используется, если для mode установлено значение DisplacementMapFilterMode.COLOR. Инициализирует экземпляр DisplacementMapFilter. Инициализирует экземпляр DisplacementMapFilter с заданными параметрами. flash.display.BitmapDataChannelflash.filters.DisplacementMapFilterModeclone Возвращает копию данного объекта фильтра.Новый экземпляр DisplacementMapFilter с теми же свойствами, что и оригинальный экземпляр. flash.filters:BitmapFilter Возвращает копию данного объекта фильтра. alpha Задает значение альфа-прозрачности, применяемое для замещения «вне пределов».Number Задает значение альфа-прозрачности, применяемое для замещения «вне пределов». Указывается в виде нормализованного значения от 0,0 до 1,0. Например, при 0,25 устанавливается 25-процентная прозрачность. Значением по умолчанию является 0. Это свойство используется, если свойство mode принимает значение DisplacementMapFilterMode.COLOR. color Задает цвет, используемый при смещениях, выходящих за пределы границ.uint Задает цвет, используемый при смещениях, выходящих за пределы границ. Допустимый диапазон смещений – от 0,0 до 1,0. Значения приводятся в шестнадцатеричном формате. Значение color по умолчанию равно 0. Это свойство используется, если свойство mode принимает значение DisplacementMapFilterMode.COLOR. componentX Указывает цветовой канал, который следует использовать в изображении карты для замещения результата x.uintЦветовой канал, используемый для смещения результата x. Указывает цветовой канал, который следует использовать в изображении карты для замещения результата x. Возможные значения являются константами BitmapDataChannel:
  • BitmapDataChannel.ALPHA
  • BitmapDataChannel.BLUE
  • BitmapDataChannel.GREEN
  • BitmapDataChannel.RED
flash.display.BitmapDataChannel
componentY Указывает цветовой канал, который следует использовать в изображении карты для замещения результата y.uint Указывает цветовой канал, который следует использовать в изображении схемы для замещения результата y. Возможные значения являются константами BitmapDataChannel:
  • BitmapDataChannel.ALPHA
  • BitmapDataChannel.BLUE
  • BitmapDataChannel.GREEN
  • BitmapDataChannel.RED
flash.display.BitmapDataChannel
mapBitmap Объект BitmapData, содержащий данные карты замещения.flash.display:BitmapDataBitmapData при назначении принимает значение null. TypeErrorTypeError Объект BitmapData, содержащий данные карты замещения. flash.display.BitmapDatamapPoint Значение, содержащее смещение левого верхнего угла целевого экранного объекта из левого верхнего угла изображения карты.flash.geom:PointТочка при назначении принимает значение null. TypeErrorTypeError Значение, содержащее смещение левого верхнего угла целевого экранного объекта из левого верхнего угла изображения карты. flash.geom.Pointmode Режим для фильтра.StringСтрока при назначении принимает значение null. TypeErrorTypeErrorСтрока режима не относится к допустимым типам. ArgumentErrorArgumentError Режим для фильтра. Возможные значения являются константами DisplacementMapFilterMode:
  • DisplacementMapFilterMode.WRAP — переносит значение замещения на другую сторону исходного изображения.
  • DisplacementMapFilterMode.CLAMP — фиксирует значение замещения по краю исходного изображения.
  • DisplacementMapFilterMode.IGNORE — если значение замещения находится вне диапазона, игнорирует замещение и использует исходный пиксель.
  • DisplacementMapFilterMode.COLOR — если значение замещения находится вне изображения, заменяет значения свойств color и alpha.
flash.filters.DisplacementMapFilterMode
scaleX Множитель, с помощью которого масштабируется результат x замещения, полученного в ходе вычисления карты.Number Множитель, с помощью которого масштабируется результат замещения x, полученного в ходе вычисления схемы. scaleY Множитель, с помощью которого масштабируется результат y замещения, полученного в ходе вычисления карты.Number Множитель, с помощью которого масштабируется результат y замещения, полученного в ходе вычисления карты.
BitmapFilterType Класс BitmapFilterType содержит значения, позволяющие задавать тип объекта BitmapFilter.Object Класс BitmapFilterType содержит значения, позволяющие задавать тип объекта BitmapFilter. При выполнении приведенного ниже кода будет нарисован серый квадрат, а к нему будет применен объект BevelFilter. Приведенный код задает свойство type с помощью константы BitmapFilterQuality.HIGH. package { import flash.display.Sprite; import flash.filters.BevelFilter; import flash.filters.BitmapFilter; import flash.filters.BitmapFilterQuality; import flash.filters.BitmapFilterType; public class BitmapFilterTypeExample extends Sprite { private var bgColor:uint = 0x999999; private var size:uint = 80; private var offset:uint = 50; public function BitmapFilterTypeExample() { draw(); var filter:BitmapFilter = getBitmapFilter(); var myFilters:Array = new Array(); myFilters.push(filter); filters = myFilters; } private function getBitmapFilter():BitmapFilter { var distance:Number = 5; var angleInDegrees:Number = 45; var highlightColor:Number = 0xCCCCCC; var highlightAlpha:Number = 0.8; var shadowColor:Number = 0x808080; var shadowAlpha:Number = 0.8; var blurX:Number = 5; var blurY:Number = 5; var strength:Number = 5; var quality:Number = BitmapFilterQuality.HIGH; var type:String = BitmapFilterType.INNER; var knockout:Boolean = false; return new BevelFilter(distance, angleInDegrees, highlightColor, highlightAlpha, shadowColor, shadowAlpha, blurX, blurY, strength, quality, type, knockout); } private function draw():void { graphics.beginFill(bgColor); graphics.drawRect(offset, offset, size, size); graphics.endFill(); } } } BevelFilterGradientBevelFilterGradientGlowFilterFULL Определяет параметр, применяющий фильтр ко всей области объекта.fullString Определяет параметр, применяющий фильтр ко всей области объекта. INNER Определяет параметр, применяющий фильтр к внутренней области объекта.innerString Определяет параметр, применяющий фильтр к внутренней области объекта. OUTER Определяет параметр, применяющий фильтр к внешней области объекта.outerString Определяет параметр, применяющий фильтр к внешней области объекта. DropShadowFilter Класс DropShadowFilter позволяет добавить эффект падающей тени к экранным объектам.flash.filters:BitmapFilter Класс DropShadowFilter позволяет добавить эффект падающей тени к экранным объектам. Алгоритм теней основан на том же блоковом фильтре, который используется в фильтре размытия. При формировании отбрасываемой тени существует несколько вариантов выбора ее стиля, включая внешнюю или внутреннюю тень и режим выбивки. Фильтр можно применять к любому экранному объекту (т. е. объекту, наследуемому от класса DisplayObject), например MovieClip, SimpleButton, TextField, Video, а также объектам BitmapData.

Выбор фильтра зависит от объекта, к которому требуется его применить:

  • Применить фильтры к визуализируемым объектам можно с помощью свойства filters (наследуемого от DisplayObject). При задании объекту свойства filters сам объект не изменяется, а фильтр можно удалить через свойство filters.
  • Для применения фильтров к объектам BitmapData следует пользоваться методом BitmapData.applyFilter(). При вызове applyFilter() для объекта BitmapData из исходного объекта BitmapData и объекта фильтра формируется изображение с применением фильтра.

При применении фильтра к экранному объекту свойство cacheAsBitmap этого объекта принимает значение true. Если удалить все фильтры, будет восстановлено исходное значение cacheAsBitmap.

Этот фильтр поддерживает масштабирование сцены. Тем не менее, он не поддерживает общее масштабирование, повороты и искажение. Если сам объект увеличен или уменьшен (т. е. если свойства scaleX и scaleY принимают значение, отличное от 1,0), фильтр не масштабируется. Он масштабируется, только когда пользователь применяет увеличение к самой сцене.

Фильтр не применяется, если полученное изображение превышает максимальные размеры. В AIR 1.5 и Flash Player 10 максимальный размер изображения составляет 8 191 пикселей в ширину или высоту, а общее количество пикселей не может превышать 16 777 215. (Т. е. если ширина изображения составляет 8 191 пикселя, его высота не может быть больше 2 048 пикселей.) В проигрывателе Flash Player 9 и более ранних версий, а также в AIR 1.1 и более ранних версий, это ограничение составляет 2 880 пикселей в высоту и 2 880 пикселей в ширину. Например, при масштабировании большого фрагмента ролика, к которому применен фильтр, фильтр будет снят, если получившееся изображение превысит максимальные размеры.

Код, представленный в следующем примере, рисует желтый квадрат и применяет к нему эффект отбрасываемой тени. В общих чертах последовательность действий в этом примере такова:
  1. Задаются три свойства, которые используются для отрисовки квадрата, к которому применяется фильтр.
  2. Создается функция конструктора. Конструктор вызывает метод draw(), использующий методы класса Graphics, полученные через свойство graphics спрайта для рисования оранжевого квадрата.
  3. В конструкторе задается переменная filter в виде объекта BitmapFilter и назначается возвращаемому значению вызова метода getBitmapFilter(). Метод getBitmapFilter() определяет используемый фильтр теней.
  4. Создается новый объект массива myFilters, и к массиву добавляется фильтр filter. Массив myFilters назначается свойству filters объекта DropShadowFilterExample. В результате применяются все фильтры, обнаруженные в myFilters. В нашем случае это только один фильтр filter.
package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.filters.BitmapFilter; import flash.filters.BitmapFilterQuality; import flash.filters.DropShadowFilter; public class DropShadowFilterExample extends Sprite { private var bgColor:uint = 0xFFCC00; private var size:uint = 80; private var offset:uint = 50; public function DropShadowFilterExample() { draw(); var filter:BitmapFilter = getBitmapFilter(); var myFilters:Array = new Array(); myFilters.push(filter); filters = myFilters; } private function getBitmapFilter():BitmapFilter { var color:Number = 0x000000; var angle:Number = 45; var alpha:Number = 0.8; var blurX:Number = 8; var blurY:Number = 8; var distance:Number = 15; var strength:Number = 0.65; var inner:Boolean = false; var knockout:Boolean = false; var quality:Number = BitmapFilterQuality.HIGH; return new DropShadowFilter(distance, angle, color, alpha, blurX, blurY, strength, quality, inner, knockout); } private function draw():void { graphics.beginFill(bgColor); graphics.drawRect(offset, offset, size, size); graphics.endFill(); } } }
flash.display.BitmapData.applyFilter()flash.display.DisplayObject.filtersflash.display.DisplayObject.cacheAsBitmapDropShadowFilter Инициализирует новый экземпляр DropShadowFilter с заданными параметрами.distanceNumber4.0Расстояние смещения для тени (в пикселях). angleNumber45Угол падения тени, от 0 до 360 (плавающая запятая). coloruint0Цвет тени в шестнадцатеричном формате 0xRRGGBB. Значение по умолчанию равно 0x000000. alphaNumber1.0Значение альфа-прозрачности для цвета тени. Действительны значения от 0.0 до 1.0. Например, при 0,25 устанавливается 25-процентная прозрачность. blurXNumber4.0Степень размытия по горизонтали. Действительны значения от 0 до 255,0 (плавающая запятая). blurYNumber4.0Степень размытия по вертикали. Действительны значения от 0 до 255,0 (плавающая запятая). strengthNumber1.0Степень вдавливания или нанесения. Чем выше значение, тем более насыщен цвет тени и тем сильнее контраст между тенью и фоном. Действительны значения от 0 до 255,0. qualityint1Заданное число применений фильтра. Используйте константы BitmapFilterQuality:
  • BitmapFilterQuality.LOW
  • BitmapFilterQuality.MEDIUM
  • BitmapFilterQuality.HIGH

Дополнительные сведения об этих значениях см. в описании свойства quality.

innerBooleanfalseОпределяет, является ли тень внутренней тенью. Значение true задает внутреннюю тень. Значение false задает внешнюю тень (тень вокруг внешнего контура объекта). knockoutBooleanfalseПрименяет эффект выбивки (true), который фактически делает заливку объекта прозрачной и выявляет цвет фона документа. hideObjectBooleanfalseОпределяет, является ли объект скрытым. Значение true указывает на то, что сам объект не нарисован, видна только его день.
Инициализирует новый экземпляр DropShadowFilter с заданными параметрами.
flash.filters.BitmapFilterQuality
clone Возвращает копию данного объекта фильтра.Новый экземпляр DropShadowFilter со всеми свойствами оригинального экземпляра DropShadowFilter. flash.filters:BitmapFilter Возвращает копию данного объекта фильтра. alpha Значение альфа-прозрачности для цвета тени.Number Значение альфа-прозрачности для цвета тени. Действительны значения от 0,0 до 1,0. Например, при 0,25 устанавливается 25-процентная прозрачность. По умолчанию используется значение 1.0. angle Угол тени.Number Угол тени. Действительны значения от 0 до 360 градусов (плавающая запятая). Значением по умолчанию является 45. blurX Степень размытия по горизонтали.Number Степень размытия по горизонтали. Действительны значения от 0 до 255,0 (плавающая запятая). Значением по умолчанию является 4,0. blurY Степень размытия по вертикали.Number Степень размытия по вертикали. Действительны значения от 0 до 255,0 (плавающая запятая). Значением по умолчанию является 4,0. color Цвет тени.uint Цвет тени. Действительны значения в шестнадцатеричном формате 0xRRGGBB. Значение по умолчанию равно 0x000000. distance Расстояние смещения для тени (в пикселях).Number Расстояние смещения для тени (в пикселях). Значение по умолчанию — 4,0 (плавающая запятая). hideObject Определяет, является ли объект скрытым.Boolean Определяет, является ли объект скрытым. Значение true указывает на то, что сам объект не нарисован, видна только его тень. Значение по умолчанию — false (объект отображается). inner Определяет, является ли тень внутренней тенью.Boolean Определяет, является ли тень внутренней тенью. Значение true указывает на наличие внутренней тени. Значение по умолчанию false задает внешнюю тень (тень вокруг внешнего контура объекта). knockout Применяет эффект выбивки (true), который фактически делает заливку объекта прозрачной и выявляет цвет фона документа.Boolean Применяет эффект выбивки (true), который фактически делает заливку объекта прозрачной и выявляет цвет фона документа. Значение по умолчанию — false (без выбивки). quality Заданное число применений фильтра.int Заданное число применений фильтра. Значение по умолчанию — BitmapFilterQuality.LOW, что эквивалентно однократному применению фильтра. Значение BitmapFilterQuality.MEDIUM применяет фильтр дважды; значение BitmapFilterQuality.HIGH — трижды. Фильтры с более низкими значениями выполняются быстрее.

Для большинства приложений достаточно значений качества low (низкое), medium (среднее) или high (высокое). Хотя можно использовать дополнительные числовые значения до 15 для получения разнообразных эффектов, более высокие значения выполняются дольше. Вместо увеличения значения quality можно просто увеличить значения свойств blurX и blurY. Это даст похожий эффект, а выполнение будет происходить быстрее.

flash.filters.BitmapFilterQuality
strength Степень вдавливания или нанесения.Number Степень вдавливания или нанесения. Чем выше значение, тем более насыщен цвет тени и тем сильнее контраст между тенью и фоном. Действительны значения от 0 до 255,0. По умолчанию — 1,0.
BitmapFilterQuality Класс BitmapFilterQuality содержит значения, позволяющие задавать качество визуализации объекта BitmapFilter.Object Класс BitmapFilterQuality содержит значения, позволяющие задавать качество визуализации объекта BitmapFilter. При выполнении приведенного ниже кода будет нарисован серый квадрат, а к нему будет применен объект BevelFilter. Приведенный код задает свойство quality с помощью константы BitmapFilterQuality.HIGH. package { import flash.display.Sprite; import flash.filters.BevelFilter; import flash.filters.BitmapFilter; import flash.filters.BitmapFilterQuality; import flash.filters.BitmapFilterType; public class BitmapFilterQualityExample extends Sprite { private var bgColor:uint = 0x999999; private var size:uint = 80; private var offset:uint = 50; public function BitmapFilterQualityExample() { draw(); var filter:BitmapFilter = getBitmapFilter(); var myFilters:Array = new Array(); myFilters.push(filter); filters = myFilters; } private function getBitmapFilter():BitmapFilter { var distance:Number = 5; var angleInDegrees:Number = 45; var highlightColor:Number = 0xCCCCCC; var highlightAlpha:Number = 0.8; var shadowColor:Number = 0x808080; var shadowAlpha:Number = 0.8; var blurX:Number = 5; var blurY:Number = 5; var strength:Number = 5; var quality:Number = BitmapFilterQuality.HIGH; var type:String = BitmapFilterType.INNER; var knockout:Boolean = false; return new BevelFilter(distance, angleInDegrees, highlightColor, highlightAlpha, shadowColor, shadowAlpha, blurX, blurY, strength, quality, type, knockout); } private function draw():void { graphics.beginFill(bgColor); graphics.drawRect(offset, offset, size, size); graphics.endFill(); } } } BevelFilterBlurFilterGlowFilterDropShadowFilterGradientBevelFilterGradientGlowFilterHIGH Определяет параметр фильтра высокого качества.3int Определяет параметр фильтра высокого качества. LOW Определяет параметр фильтра низкого качества.1int Определяет параметр фильтра низкого качества. MEDIUM Определяет параметр фильтра среднего качества.2int Определяет параметр фильтра среднего качества. DisplacementMapFilterMode Класс DisplacementMapFilterMode передает значения для свойства mode класса DisplacementMapFilter.Object Класс DisplacementMapFilterMode передает значения для свойства mode класса DisplacementMapFilter. CLAMP Фиксирует значение замещения по краю исходного изображения.clampString Фиксирует значение замещения по краю исходного изображения. Используется со свойством DisplacementMapFilter.mode. flash.filters.DisplacementMapFilter.modeCOLOR Если значение смещения находится вне изображения, заменяет значения свойств color и alpha.colorString Если значение смещения находится вне изображения, заменяет значения свойств color и alpha. Используется со свойством DisplacementMapFilter.mode. flash.filters.DisplacementMapFilter.modeIGNORE Если значение замещения находится вне диапазона, игнорирует замещение и использует исходный пиксель.ignoreString Если значение замещения находится вне диапазона, игнорирует замещение и использует исходный пиксель. Используется со свойством DisplacementMapFilter.mode. flash.filters.DisplacementMapFilter.modeWRAP Переносит значение замещения на другую сторону исходного изображения.wrapString Переносит значение замещения на другую сторону исходного изображения. Используется со свойством DisplacementMapFilter.mode. flash.filters.DisplacementMapFilter.modeBevelFilter Класс BevelFilter позволяет добавлять эффект наклона в экранные объекты.Добавляет эффект наклона. flash.filters:BitmapFilter Класс BevelFilter позволяет добавлять эффект наклона в экранные объекты. Эффект наклона позволяет сделать объекты, например кнопки, трехмерными. Вид наклона можно изменять с помощью различных цветов подсветок и теней, силы размытия на наклоне, угла и расположения наклона, а также эффекта выбивки. Фильтр можно применять к любому экранному объекту (т. е. объекту, наследуемому от класса DisplayObject), например MovieClip, SimpleButton, TextField, Video, а также объектам BitmapData.

Новый фильтр можно создать с помощью конструктора new BevelFilter(). Выбор фильтра зависит от объекта, к которому требуется его применить:

  • Если фильтр применяется к фрагментам ролика, текстовым полям, кнопкам или видео, следует использовать свойство filters (наследуемое от класса DisplayObject). При задании объекту свойства filters сам объект не изменяется, а фильтр можно удалить через свойство filters.
  • Для применения фильтров к объектам BitmapData следует пользоваться методом BitmapData.applyFilter(). При вызове applyFilter() для объекта BitmapData из исходного объекта BitmapData и объекта фильтра формируется изображение с применением фильтра.

При применении фильтра к экранному объекту свойство cacheAsBitmap этого объекта принимает значение true. Если удалить все фильтры, будет восстановлено исходное значение cacheAsBitmap.

Этот фильтр поддерживает масштабирование сцены. Тем не менее, он не поддерживает общее масштабирование, повороты и искажение. Если сам объект увеличен или уменьшен (т. е. если свойства scaleX и scaleY не равны 100%), фильтр не масштабируется. Он масштабируется, только когда пользователь применяет увеличение к самой сцене.

Фильтр не применяется, если полученное изображение превышает максимальные размеры. В AIR 1.5 и Flash Player 10 максимальный размер изображения составляет 8 191 пикселей в ширину или высоту, а общее количество пикселей не может превышать 16 777 215. (Т. е. если ширина изображения составляет 8 191 пикселя, его высота не может быть больше 2 048 пикселей.) В проигрывателе Flash Player 9 и более ранних версий, а также в AIR 1.1 и более ранних версий, это ограничение составляет 2 880 пикселей в высоту и 2 880 пикселей в ширину. Например, при масштабировании большого фрагмента ролика, к которому применен фильтр, фильтр будет снят, если получившееся изображение превысит максимальные размеры.

В результате выполнения приведенного ниже кода будет нарисован темно-желтый квадрат, к которому будет применен фильтр наклона с ярко-желтой подсветкой (0xFFFF00) и голубой тенью (0x0000FF). Порядок выполнения кода таков:
  1. Импортируется требуемый класс.
  2. Объявляются три свойства функции draw(), рисующей объект, к которому и применяется фильтр наклона.
  3. Создается функция конструктора BevelFilterExample(), которая выполняет следующее:
    • Вызывает функцию draw(), которая объявляется позднее.
    • Объявляет переменную filter в виде объекта BitmapFilter и назначает ее возвращаемому значению вызова getBitmapFilter().
    • Создает новый массив myFilters и добавляет к массиву filter, а также назначает myFilters свойству filters объекта BevelFilterExample. В результате применяются все фильтры, обнаруженные в myFilters. В нашем случае это только один фильтр filter.
  4. Создайте функцию getBitmapFilter для создания фильтра и задания его свойств.
  5. Создайте функцию draw(). Эта функция использует методы класса Graphics, доступные через свойство graphics класса Sprite для рисования квадрата.
package { import flash.display.Sprite; import flash.filters.BevelFilter; import flash.filters.BitmapFilter; import flash.filters.BitmapFilterQuality; import flash.filters.BitmapFilterType; public class BevelFilterExample extends Sprite { private var bgColor:uint = 0xFFCC00; private var size:uint = 80; private var offset:uint = 50; public function BevelFilterExample() { draw(); var filter:BitmapFilter = getBitmapFilter(); var myFilters:Array = new Array(); myFilters.push(filter); filters = myFilters; } private function getBitmapFilter():BitmapFilter { var distance:Number = 5; var angleInDegrees:Number = 45; var highlightColor:Number = 0xFFFF00; var highlightAlpha:Number = 0.8; var shadowColor:Number = 0x0000FF; var shadowAlpha:Number = 0.8; var blurX:Number = 5; var blurY:Number = 5; var strength:Number = 5; var quality:Number = BitmapFilterQuality.HIGH; var type:String = BitmapFilterType.INNER; var knockout:Boolean = false; return new BevelFilter(distance, angleInDegrees, highlightColor, highlightAlpha, shadowColor, shadowAlpha, blurX, blurY, strength, quality, type, knockout); } private function draw():void { graphics.beginFill(bgColor); graphics.drawRect(offset, offset, size, size); graphics.endFill(); } } }
flash.display.DisplayObject.filtersflash.display.DisplayObject.cacheAsBitmapflash.display.BitmapData.applyFilter()BevelFilter Инициализирует новый экземпляр BevelFilter с заданными параметрами.distanceNumber4.0Расстояние смещения наклона в пикселах (плавающая запятая). angleNumber45Угол скоса, от 0 до 360 градусов. highlightColoruint0xFFFFFFЦвет подсветки скоса, 0xRRGGBB. highlightAlphaNumber1.0Значение альфа-прозрачности цвета выделения. Действительны значения от 0.0 до 1.0. Например, при 0,25 устанавливается 25-процентная прозрачность. shadowColoruint0x000000Цвет подсветки скоса, 0xRRGGBB. shadowAlphaNumber1.0Значение альфа-прозрачности цвета тени. Действительны значения от 0.0 до 1.0. Например, при 0,25 устанавливается 25-процентная прозрачность. blurXNumber4.0Степень размытия по горизонтали в пикселях. Действительны значения от 0 до 255,0 (плавающая запятая). blurYNumber4.0Степень размытия по вертикали в пикселях. Действительны значения от 0 до 255,0 (плавающая запятая). strengthNumber1Степень вдавливания или нанесения. Чем выше значение, тем более насыщен цвет тени и тем сильнее контраст между наклоном и фоном. Действительны значения от 0 до 255,0. qualityint1Качество наклона. Действительны значения от 0 до 15, но для большинства приложений можно использовать константы BitmapFilterQuality:
  • BitmapFilterQuality.LOW
  • BitmapFilterQuality.MEDIUM
  • BitmapFilterQuality.HIGH

Фильтры с более низкими значениями выполняются быстрее. Для достижения нужных эффектов можно использовать и другие числовые значения.

typeStringinnerТип скоса. Действительные значения констант BitmapFilterType: BitmapFilterType.INNER, BitmapFilterType.OUTER или BitmapFilterType.FULL. knockoutBooleanfalseПрименяет эффект выбивки (true), который фактически делает заливку объекта прозрачной и выявляет цвет фона документа.
Инициализирует новый экземпляр BevelFilter с заданными параметрами.
BitmapFilterQualityBitmapFilterType
clone Возвращает копию данного объекта фильтра.Новый экземпляр BevelFilter с теми же свойствами, что и оригинальный экземпляр BevelFilter. flash.filters:BitmapFilter Возвращает копию данного объекта фильтра. angle Угол наклона.Number Угол наклона. Действительны значения от 0 до 360°. Значением по умолчанию является 45°.

Значение угла представляет угол, под которым падает свет из предполагаемого источника, и определяет расположение эффекта относительно объекта. Если свойство distance имеет значение 0, эффект не смещается относительно объекта и, следовательно, свойство angle никак не влияет на результат.

blurX Интенсивность горизонтальной размывки (в пикселях).Number Интенсивность горизонтальной размывки (в пикселях). Действительны значения от 0 до 255 (плавающая запятая). По умолчанию используется значение 4. Значения, являющиеся степенью 2 (т. е. 2, 4, 8, 16 и 32), оптимизируются и выполняются быстрее, чем остальные. blurY Интенсивность вертикальной размывки (в пикселях).Number Интенсивность вертикальной размывки (в пикселях). Действительны значения от 0 до 255 (плавающая запятая). По умолчанию используется значение 4. Значения, являющиеся степенью 2 (т. е. 2, 4, 8, 16 и 32), оптимизируются и выполняются быстрее, чем остальные. distance Расстояние смещения наклона.Number Расстояние смещения наклона. Действительные значения заданы в пикселах (плавающая запятая). По умолчанию — 4. highlightAlpha Значение альфа-прозрачности цвета выделения.Number Значение альфа-прозрачности цвета выделения. Значение указано в виде нормализованного значения от 0 до 1. Например, при 0,25 устанавливается 25-процентная прозрачность. Значением по умолчанию является 1. highlightColor Цвет подсветки наклона.uint Цвет подсветки наклона. Действительны значения в шестнадцатеричном формате, 0xRRGGBB. Значение по умолчанию — 0xFFFFFF. knockout Применяет эффект выбивки (true), который фактически делает заливку объекта прозрачной и выявляет цвет фона документа.Boolean Применяет эффект выбивки (true), который фактически делает заливку объекта прозрачной и выявляет цвет фона документа. Значение по умолчанию — false (без эффекта выбивки). quality Заданное число применений фильтра.int Заданное число применений фильтра. Значение по умолчанию — BitmapFilterQuality.LOW, что эквивалентно однократному применению фильтра. Значение BitmapFilterQuality.MEDIUM применяет фильтр дважды; значение BitmapFilterQuality.HIGH — трижды. Фильтры с более низкими значениями выполняются быстрее.

Для большинства приложений достаточно значения quality на уровне «low» («низкое»), «medium» («среднее») или «high» («высокое»). Хотя можно использовать дополнительные числовые значения до 15 для получения разнообразных эффектов, более высокие значения выполняются дольше. Вместо увеличения значения quality можно просто увеличить значения свойств blurX и blurY. Это даст похожий эффект, а выполнение будет происходить быстрее.

Можно использовать следующие константы BitmapFilterQuality для задания значений свойства quality:

  • BitmapFilterQuality.LOW
  • BitmapFilterQuality.MEDIUM
  • BitmapFilterQuality.HIGH

shadowAlpha Значение альфа-прозрачности цвета тени.Number Значение альфа-прозрачности цвета тени. Данное значение указано в виде нормализованного значения от 0 до 1. Например, при 0,25 устанавливается 25-процентная прозрачность. По умолчанию — 1. shadowColor Цвет тени для наклона.uint Цвет тени для наклона. Действительны значения в шестнадцатеричном формате, 0xRRGGBB. Значение по умолчанию — 0x000000. strength Степень вдавливания или нанесения.Number Степень вдавливания или нанесения. Действительны значения от 0 до 255. Чем выше значение, тем более насыщен цвет фаски и тем сильнее контраст между наклоном и фоном. Значением по умолчанию является 1. type Расположение наклона на объекте.StringСтрока при назначении принимает значение null. TypeErrorTypeError Расположение наклона на объекте. Внутренний и внешний наклоны применяются к внутренней и внешней сторонам, а полная фаска применяется ко всему объекту. Действительными значениями являются константы BitmapFilterType:
  • BitmapFilterType.INNER
  • BitmapFilterType.OUTER
  • BitmapFilterType.FULL
BitmapFilter Класс BitmapFilter является базовым классом для всех фильтров эффектов изображения.Базовый класс для всех эффектов фильтра изображения. Object Класс BitmapFilter является базовым классом для всех фильтров эффектов изображения.

Классы BevelFilter, BlurFilter, ColorMatrixFilter, ConvolutionFilter, DisplacementMapFilter, DropShadowFilter, GlowFilter, GradientBevelFilter и GradientGlowFilter являются расширениями класс BitmapFilter. Эти фильтры можно применять к любому экранному объекту.

Класс BitmapFilter невозможно обрабатывать или расширять непосредственно.

В следующем примере показано, как применить несколько фильтров к конкретному объекту DisplayObject и как отслеживать их с помощью свойства filters. package { import flash.display.Sprite; import flash.filters.*; public class BitmapFilterExample extends Sprite { public function BitmapFilterExample() { trace(this.filters.length); // 0 var tmpFilters:Array = this.filters; tmpFilters.push(FilterFactory.createFilter(FilterFactory.BEVEL_FILTER)); tmpFilters.push(FilterFactory.createFilter(FilterFactory.GLOW_FILTER)); this.filters = tmpFilters; trace(this.filters.length); // 2 trace(this.filters[0] is BitmapFilter); // true trace(this.filters[0] is BevelFilter); // true trace(this.filters[1] is BitmapFilter); // true trace(this.filters[1] is GlowFilter); // true } } } import flash.filters.*; class FilterFactory { public static var BEVEL_FILTER:String = "BevelFilter"; public static var BevelFilterConstructor:Class = BevelFilter; public static var BLUR_FILTER:String = "BlurFilter"; public static var BlurFilterConstructor:Class = BlurFilter; public static var COLOR_MATRIX_FILTER:String = "ColorMatrixFilter"; public static var ColorMatrixFilterConstructor:Class = ColorMatrixFilter; public static var CONVOLUTION_FILTER:String = "ConvolutionFilter"; public static var ConvolutionFilterConstructor:Class = ConvolutionFilter; public static var DISPLACEMENT_MAP_FILTER:String = "DisplacementMapFilter"; public static var DisplacementMapFilterConstructor:Class = DisplacementMapFilter; public static var DROP_SHADOW_FILTER:String = "DropShadowFilter"; public static var DropShadowFilterConstructor:Class = DropShadowFilter; public static var GLOW_FILTER:String = "GlowFilter"; public static var GlowFilterConstructor:Class = GlowFilter; public static var GRADIENT_BEVEL_FILTER:String = "GradientBevelFilter"; public static var GradientBevelFilterConstructor:Class = GradientBevelFilter; public static var GRADIENT_GLOW_FILTER:String = "GradientGlowFilter"; public static var GradientGlowFilterConstructor:Class = GradientGlowFilter; public static function createFilter(type:String):BitmapFilter { return new FilterFactory[type + "Constructor"](); } }
clone Возвращает объект BitmapFilter, являющийся точной копией исходного объекта BitmapFilter.Объект BitmapFilter. flash.filters:BitmapFilterКопия объекта BitmapFilter. Возвращает объект BitmapFilter, являющийся точной копией исходного объекта BitmapFilter.
BlurFilter Класс BlurFilter позволяет применять визуальный эффект размывки к экранным объектам.Эффект размытия. flash.filters:BitmapFilter Класс BlurFilter позволяет применять визуальный эффект размывки к экранным объектам. Эффект размытия смягчает детали изображения. Можно создавать различные размытия: от мягкого и расфокусированного до размытия по Гауссу — дымчатого изображения, которое зритель видит будто бы через полупрозрачное стекло. При значении low свойства quality этого фильтра результатом будет слегка расфокусированное изображение. Если же свойству quality присвоено значение high, то изображение будет ближе к размытию по Гауссу. Фильтр можно применять к любому экранному объекту (т. е. объекту, наследуемому от класса DisplayObject), например MovieClip, SimpleButton, TextField, Video, а также объектам BitmapData.

Новый фильтр можно создать с помощью конструктора new BlurFilter(). Выбор фильтра зависит от объекта, к которому требуется его применить:

  • Если фильтр применяется к фрагментам ролика, текстовым полям, кнопкам или видео, следует использовать свойство filters (наследуемое от класса DisplayObject). При задании объекту свойства filters сам объект не изменяется, а фильтр можно удалить через свойство filters.
  • Для применения фильтров к объектам BitmapData следует пользоваться методом BitmapData.applyFilter(). При вызове applyFilter() для объекта BitmapData из исходного объекта BitmapData и объекта фильтра формируется изображение с применением фильтра.

При применении фильтра к визуализируемому объекту свойство cacheAsBitmap этого объекта принимает значение true. Если удалить все фильтры, будет восстановлено исходное значение cacheAsBitmap.

Этот фильтр поддерживает масштабирование сцены. Тем не менее, он не поддерживает общее масштабирование, повороты и искажение. Если сам объект увеличен или уменьшен (т. е. если свойства scaleX и scaleY не равны 100%), эффект фильтр не масштабируется. Он масштабируется, только когда пользователь применяет увеличение к самой сцене.

Фильтр не применяется, если полученное изображение превышает максимальные размеры. В AIR 1.5 и Flash Player 10 максимальный размер изображения составляет 8 191 пикселей в ширину или высоту, а общее количество пикселей не может превышать 16 777 215. (Т. е. если ширина изображения составляет 8 191 пикселя, его высота не может быть больше 2 048 пикселей.) В проигрывателе Flash Player 9 и более ранних версий, а также в AIR 1.1 и более ранних версий, это ограничение составляет 2 880 пикселей в высоту и 2 880 пикселей в ширину. Например, при масштабировании большого фрагмента ролика, к которому применен фильтр, фильтр будет снят, если получившееся изображение превысит максимальные размеры.

Код, представленный в следующем примере, рисует темно-желтый квадрат и применяет к нему фильтр размытия по Гауссу. Порядок выполнения кода таков:
  1. Импортируется требуемый класс.
  2. Объявляются три свойства функции draw(), рисующей объект, к которому и применяется фильтр «Размытие».
  3. Создается функция конструктора BlurFilterExample(), которая выполняет следующее:
    • Вызывает функцию draw(), которая объявляется позднее.
    • Объявляет переменную filter в виде объекта BitmapFilter и назначает ее возвращаемому значению вызова getBitmapFilter().
    • Создает новый массив myFilters и добавляет к массиву filter, а также назначает myFilters свойству filters объекта BlurFilterExample. В результате применяются все фильтры, обнаруженные в myFilters. В нашем случае это только один фильтр filter.
  4. Создайте функцию getBitmapFilter для создания фильтра и задания его свойств.
  5. Создайте функцию draw(). Эта функция использует методы класса Graphics, доступные через свойство graphics класса Sprite для рисования квадрата.
package { import flash.display.Sprite; import flash.filters.BitmapFilter; import flash.filters.BitmapFilterQuality; import flash.filters.BlurFilter; public class BlurFilterExample extends Sprite { private var bgColor:uint = 0xFFCC00; private var size:uint = 80; private var offset:uint = 50; public function BlurFilterExample() { draw(); var filter:BitmapFilter = getBitmapFilter(); var myFilters:Array = new Array(); myFilters.push(filter); filters = myFilters; } private function getBitmapFilter():BitmapFilter { var blurX:Number = 30; var blurY:Number = 30; return new BlurFilter(blurX, blurY, BitmapFilterQuality.HIGH); } private function draw():void { graphics.beginFill(bgColor); graphics.drawRect(offset, offset, size, size); graphics.endFill(); } } }
flash.display.DisplayObject.filtersflash.display.DisplayObject.cacheAsBitmapflash.display.BitmapData.applyFilter()BlurFilter Инициализирует фильтр с заданными параметрами.blurXNumber4.0Величина размытия по горизонтали. Действительны значения от 0 до 255,0 (значение с плавающей точкой). blurYNumber4.0Величина размытия по вертикали. Действительны значения от 0 до 255,0 (значение с плавающей точкой). qualityint1Заданное число применений фильтра. Можно задать качество с помощью констант BitmapFilterQuality:
  • flash.filters.BitmapFilterQuality.LOW
  • flash.filters.BitmapFilterQuality.MEDIUM
  • flash.filters.BitmapFilterQuality.HIGH

При высоком качестве (high) изображение похоже на размытие по Гауссу. Для большинства приложений этих значений достаточно. Хотя можно использовать дополнительные числовые значения до 15 для получения разнообразных эффектов, более высокие значения выполняются дольше.

Инициализирует фильтр.
Инициализирует фильтр с заданными параметрами. Значения по умолчанию дают мягкое, расфокусированное изображение.
clone Возвращает копию данного объекта фильтра.Новый экземпляр BlurFilter с теми же свойствами, что и оригинальный экземпляр BlurFilter. flash.filters:BitmapFilter Возвращает копию данного объекта фильтра. blurX Степень размытия по горизонтали.Number Степень размытия по горизонтали. Действительны значения от 0 до 255 (плавающая запятая). По умолчанию используется значение 4. Значения, являющиеся степенью 2 (т.е. 2, 4, 8, 16 и 32), оптимизируются и выполняются быстрее, чем остальные. blurY Степень размытия по вертикали.Number Степень размытия по вертикали. Действительны значения от 0 до 255 (плавающая запятая). По умолчанию используется значение 4. Значения, являющиеся степенью 2 (т.е. 2, 4, 8, 16 и 32), оптимизируются и выполняются быстрее, чем остальные. quality Число применений эффекта размытия.int Число применений эффекта размытия. Значение по умолчанию — BitmapFilterQuality.LOW, что эквивалентно однократному применению фильтра. Значение BitmapFilterQuality.MEDIUM применяет фильтр дважды; значение BitmapFilterQuality.HIGH — трижды для получения размытия по Гауссу. Фильтры с более низкими значениями выполняются быстрее.

Для большинства приложений достаточно значения quality на уровне «low» («низкое»), «medium» («среднее») или «high» («высокое»). Хотя можно использовать дополнительные числовые значения до 15 для увеличения числа раз применения эффекта размытия, более высокие значения выполняются дольше. Вместо увеличения значения quality можно просто увеличить значения свойств blurX и blurY. Это даст похожий эффект, а выполнение будет происходить быстрее.

Можно использовать следующие константы BitmapFilterQuality для задания свойства quality:

  • BitmapFilterQuality.LOW
  • BitmapFilterQuality.MEDIUM
  • BitmapFilterQuality.HIGH
GradientBevelFilter Класс GradientBevelFilter позволяет применять эффект градиентного наклона к экранным объектам.Позволяет добавлять эффект «Градиентный наклон». flash.filters:BitmapFilter Класс GradientBevelFilter позволяет применять эффект градиентного наклона к экранным объектам. Градиентный наклон представляет собой скошенный край с цветовым градиентом на внешней или внутренней стороне или поверх всего объекта. Скошенные края придают объектам эффект трехмерности. Фильтр можно применять к любому экранному объекту (т. е. объекту, наследуемому от класса DisplayObject), например MovieClip, SimpleButton, TextField, Video, а также объектам BitmapData.

Выбор фильтра зависит от объекта, к которому требуется его применить:

  • Применить фильтр к экранным объектам можно с помощью свойства filters. При задании объекту свойства filters сам объект не изменяется, а фильтр можно удалить через свойство filters.
  • Для применения фильтров к объектам BitmapData следует пользоваться методом BitmapData.applyFilter(). При вызове applyFilter() для объекта BitmapData из исходного объекта BitmapData и объекта фильтра формируется изображение с применением фильтра.

При применении фильтра к визуализируемому объекту свойство cacheAsBitmap этого объекта принимает значение true. Если удалить все фильтры, будет восстановлено исходное значение cacheAsBitmap.

Этот фильтр поддерживает масштабирование сцены. Тем не менее, общее масштабирование, вращение и искажение не поддерживается. Если сам объект увеличен или уменьшен (т.е. если scaleX и scaleY имеют значение, отличное от 1,0), эффект фильтра не масштабируется. Он масштабируется, только когда пользователь применяет увеличение к самой сцене.

Фильтр не применяется, если полученное изображение превышает максимальные размеры. В AIR 1.5 и Flash Player 10 максимальный размер изображения составляет 8 191 пикселей в ширину или высоту, а общее количество пикселей не может превышать 16 777 215. (Т. е. если ширина изображения составляет 8 191 пикселя, его высота не может быть больше 2 048 пикселей.) В проигрывателе Flash Player 9 и более ранних версий, а также в AIR 1.1 и более ранних версий, это ограничение составляет 2 880 пикселей в высоту и 2 880 пикселей в ширину. Например, при масштабировании большого фрагмента ролика, к которому применен фильтр, фильтр будет снят, если получившееся изображение превысит максимальные размеры.

При выполнении кода, приведенного в примере ниже, будет нарисован квадрат, к которому будет применен фильтр градиентного наклона. В общих чертах последовательность действий в этом примере такова:
  1. Импортируется требуемый класс.
  2. Объявляются глобальные переменные для определения квадрата и фильтра.
  3. Создается функция конструктора, которая выполняет следующее:
    • Вызывает метод draw(), который использует методы класса Graphics, доступные через свойство graphics спрайта для рисования серого квадрата.
    • Создает новый объект BitmapFilter с именем filter и назначает ему возвращаемое значение вызова getBitmapFilter(), определяющего фильтр.
    • Создает массив с именем myFilters и добавляет к нему filter.
    • Назначает myFilters свойству filters объекта GradientBevelFilterExample. В результате применяются все фильтры, обнаруженные в myFilters. В нашем случае это только один фильтр filter.
package { import flash.display.Sprite; import flash.filters.BitmapFilter; import flash.filters.BitmapFilterQuality; import flash.filters.BitmapFilterType; import flash.filters.GradientBevelFilter; public class GradientBevelFilterExample extends Sprite { private var bgColor:uint = 0xCCCCCC; private var size:uint = 80; private var offset:uint = 50; private var distance:Number = 5; private var angleInDegrees:Number = 225; // opposite 45 degrees private var colors:Array = [0xFFFFFF, 0xCCCCCC, 0x000000]; private var alphas:Array = [1, 0, 1]; private var ratios:Array = [0, 128, 255]; private var blurX:Number = 8; private var blurY:Number = 8; private var strength:Number = 2; private var quality:Number = BitmapFilterQuality.HIGH private var type:String = BitmapFilterType.INNER; private var knockout:Boolean = true; public function GradientBevelFilterExample() { draw(); var filter:BitmapFilter = getBitmapFilter(); var myFilters:Array = new Array(); myFilters.push(filter); filters = myFilters; } private function getBitmapFilter():BitmapFilter { return new GradientBevelFilter(distance, angleInDegrees, colors, alphas, ratios, blurX, blurY, strength, quality, type, knockout); } private function draw():void { graphics.beginFill(bgColor); graphics.drawRect(offset, offset, size, size); graphics.endFill(); } } }
GradientBevelFilter.ratiosflash.display.BitmapData.applyFilter()BevelFilterflash.display.DisplayObject.filtersflash.display.DisplayObject.cacheAsBitmapGradientBevelFilter Инициализирует фильтр с заданными параметрами.distanceNumber4.0Расстояние смещения. Действительны значения от 0 до 8. angleNumber45Угол в градусах. Действительны значения от 0 до 360. colorsArraynullМассив шестнадцатеричных значений цвета RGB для применения в градиенте. Например, красный задается значением 0xFF0000, голубой — значением 0x0000FF и т.д. alphasArraynullМассив значений альфа-прозрачности для соответствующих цветов в массиве colors. Действительные значения для каждого из элементов массива — от 0 до 1. Например, при 0,25 устанавливается 25-процентная прозрачность. ratiosArraynullМассив значений распределения цветов; действительными являются значения от 0 до 255. blurXNumber4.0Степень размытия по горизонтали. Действительны значения от 0 до 255. Размытие со значением 1 или менее означает, что исходное изображение копируется как есть. По умолчанию используется значение 4. Значения, являющиеся степенью 2 (т.е. 2, 4, 8, 16 и 32), оптимизируются и выполняются быстрее, чем остальные. blurYNumber4.0Степень размытия по вертикали. Действительны значения от 0 до 255. Размытие со значением 1 или менее означает, что исходное изображение копируется как есть. Значения, являющиеся степенью 2 (т. е. 2, 4, 8, 16 и 32), оптимизируются и выполняются быстрее, чем остальные. strengthNumber1Степень вдавливания или нанесения. Чем выше значение, тем более насыщен цвет тени и тем сильнее контраст между наклоном и фоном. Действительны значения от 0 до 255. Значение 0 означает, что фильтр не применяется. qualityint1Качество фильтра. Используйте константы BitmapFilterQuality:
  • BitmapFilterQuality.LOW
  • BitmapFilterQuality.MEDIUM
  • BitmapFilterQuality.HIGH

Подробные сведения см. в описании свойства quality.

typeStringinnerМестоположение эффекта «Наклон». Возможные значения констант BitmapFilterType:
  • BitmapFilterType.OUTER — наклон по внешнему краю объекта.
  • BitmapFilterType.INNER — наклон по внутреннему краю объекта.
  • BitmapFilterType.FULL — наклон по всему объекту.
knockoutBooleanfalseУказывает, применяется ли эффект выбивки. Значение true делает заливку объекта прозрачной и делает видимым цвет фона документа.
Инициализирует фильтр с заданными параметрами.
GradientBevelFilter.qualityGradientBevelFilter.ratios
clone Возвращает копию данного объекта фильтра.Новый экземпляр GradientBevelFilter с теми же свойствами, что и оригинальный экземпляр GradientBevelFilter. flash.filters:BitmapFilter Возвращает копию данного объекта фильтра. alphas Массив значений альфа-прозрачности для соответствующих цветов в массиве colors.ArrayМассив при назначении принимает значение null. TypeErrorTypeErrorМассив значений альфа-канала. Массив значений альфа-прозрачности для соответствующих цветов в массиве colors. Действительные значения для каждого из элементов массива — от 0 до 1. Например, при 0,25 устанавливается 25-процентная прозрачность.

Свойство alphas невозможно изменить, непосредственно поменяв его значения. Вместо этого следует внести изменения в ссылку на alphas, а затем задать alphas для ссылки.

Свойства colors, alphas и ratios связаны между собой. Первый элемент массива colors соответствует первому элементу массива alphas и массива ratios и т.д.

GradientBevelFilter.colorsGradientBevelFilter.ratios
angle Угол в градусах.Number Угол в градусах. Действительны значения от 0 до 360. По умолчанию — 45.

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

GradientBevelFilter.ratios
blurX Степень размытия по горизонтали.Number Степень размытия по горизонтали. Действительны значения от 0 до 255. Размытие со значением 1 или менее означает, что исходное изображение копируется как есть. По умолчанию используется значение 4. Значения, являющиеся степенью 2 (т.е. 2, 4, 8, 16 и 32), оптимизируются и выполняются быстрее, чем остальные. blurY Степень размытия по вертикали.Number Степень размытия по вертикали. Действительны значения от 0 до 255. Размытие со значением 1 или менее означает, что исходное изображение копируется как есть. По умолчанию используется значение 4. Значения, являющиеся степенью 2 (т.е. 2, 4, 8, 16 и 32), оптимизируются и выполняются быстрее, чем остальные. colors Массив шестнадцатеричных значений цвета RGB для применения в градиенте.ArrayМассив при назначении принимает значение null. TypeErrorTypeErrorМассив шестнадцатеричных значений цвета палитры RGB. Массив шестнадцатеричных значений цвета RGB для применения в градиенте. Например, красный задается значением 0xFF0000, голубой — значением 0x0000FF и т. д.

Свойство colors нельзя изменить, непосредственно поменяв его значения. Вместо этого следует внести изменения в ссылку на colors, а затем задать colors для ссылки.

Свойства colors, alphas и ratios связаны между собой. Первый элемент массива colors соответствует первому элементу массива alphas и массива ratios и т.д.

GradientBevelFilter.alphasGradientBevelFilter.ratios
distance Расстояние смещения.Number Расстояние смещения. Действительны значения от 0 до 8. Значением по умолчанию является 4,0. knockout Определяет, применяется ли к объекту эффект выбивки.Boolean Определяет, применяется ли к объекту эффект выбивки. Эффект выбивки делает заливку объекта прозрачной и выявляет цвет фона документа. Значение true указывает на наличие эффекта выбивки. По умолчанию задано значение false (без эффекта выбивки). quality Заданное число применений фильтра.int Заданное число применений фильтра. Значение по умолчанию — BitmapFilterQuality.LOW, что эквивалентно однократному применению фильтра. Значение BitmapFilterQuality.MEDIUM применяет фильтр дважды; значение BitmapFilterQuality.HIGH — трижды. Фильтры с более низкими значениями выполняются быстрее.

Для большинства приложений достаточно значения quality на уровне «low» («низкое»), «medium» («среднее») или «high» («высокое»). Хотя можно использовать дополнительные числовые значения до 15 для получения разнообразных эффектов, более высокие значения выполняются дольше. Вместо увеличения значения quality можно просто увеличить значения свойств blurX и blurY. Это даст похожий эффект, а выполнение будет происходить быстрее.

BitmapFilterQualityGradientBevelFilter.ratios
ratios Массив пропорций распределения цвета для соответствующих цветов в массиве colors.ArrayМассив при назначении принимает значение null. TypeErrorTypeError Массив пропорций распределения цвета для соответствующих цветов в массиве colors. Действительные значения для каждого из элементов массива — от 0 до 255.

Свойство ratios нельзя изменить, непосредственно поменяв его значения. Вместо этого следует внести изменения в ссылку на ratios, а затем задать ratios для ссылки.

Свойства colors, alphas и ratios связаны между собой. Первый элемент массива colors соответствует первому элементу массива alphas и массива ratios и т.д.

Чтобы представить, как распределяются цвета в градиентном наклоне, представьте какой-нибудь цвет. Предположим что, простой наклон имеет сплошной цвет подсветки и сплошной цвет тени, а градиентный наклон имеет градиентную подсветку и градиентную тень. Представьте, что подсветка располагается в верхнем левом углу, а тень — в правом верхнем. Представьте, что одинарное использование фильтра позволяет получить четыре цвета подсветки и четыре цвета тени. В дополнение к подсветке и тени фильтр использует базовый цвет заливки, который отображается на стыке областей подсветки и тени. Таким образом, всего получается девять цветов, поэтому соответствующее число элементов в массиве пропорций тоже девять.

Представьте градиент как сочетание переходящих друг в друга полос разных цветов. Каждое значение пропорции задает положение цвета по радиусу градиента, где 0 — это самая удаленная от центра точка, а 255 — самая ближняя к центру. Как правило, среднее значение — 128, оно же является значением базовой заливки. Для получения эффекта наклона, показанного на рисунке ниже, необходимо назначить значения пропорций, как показано ниже, и использовать девятицветный пример:

  • Первые четыре цвета лежат в диапазоне от 0 до 127, при этом каждое последующее значение должно быть больше предыдущего. Это подсвеченная сторона.
  • Пятый цвет (средний) — это базовая заливка, его значение 128. Значение пикселя 128 задает базовую заливку, которая отображается за границами фигуры (и вокруг краев наклона), если задан внешний тип. Если же задан внутренний тип, то она отображается внутри фигуры и перекрывает собственную заливку объекта.
  • Последние четыре цвета лежат в диапазоне от 129 до 255, при этом каждое последующее значение должно быть больше предыдущего. Это теневая сторона.

Если необходимо, чтобы цвета с каждой стороны распределялись ровно, рекомендуется использовать нечетное количество цветов, где средний цвет будет цветом заливки. Распределите значения цветов равномерно в диапазонах 0-127 и 129-255, затем скорректируйте значение, чтобы изменить ширину каждой из полосок градиента. Для градиентного наклона из девяти цветов возможен массив [16, 32, 64, 96, 128, 160, 192, 224, 235]. На рисунке ниже показан рассмотренный градиентный наклон.

Следует помнить, что распределение цветов в градиенте зависит от значений свойств blurX, blurY, strength и quality, а также от значений ratios.

GradientBevelFilter.alphasGradientBevelFilter.colorsflash.display.Graphics.beginGradientFill()
strength Степень вдавливания или нанесения.Number Степень вдавливания или нанесения. Чем выше значение, тем более насыщен цвет тени и тем сильнее контраст между наклоном и фоном. Действительны значения от 0 до 255. Значение 0 означает, что фильтр не применяется. Значением по умолчанию является 1. GradientBevelFilter.ratiostype Местоположение эффекта «Наклон».String Местоположение эффекта «Наклон». Возможные значения констант BitmapFilterType:
  • BitmapFilterType.OUTER — наклон по внешнему краю объекта.
  • BitmapFilterType.INNER — наклон по внутреннему краю объекта.
  • BitmapFilterType.FULL — наклон по всему объекту.
ConvolutionFilter Класс ConvolutionFilter применяет эффект фильтра матричного свертывания.Применяет фильтр матричного свертывания. flash.filters:BitmapFilter Класс ConvolutionFilter применяет эффект фильтра матричного свертывания. Свертывание объединяет пиксели во входном изображении с соседними пикселями для создания изображения. С помощью свертывания можно выполнять множество различных операций по обработке изображений, включая размытие, определение краев, регулировку резкости, тиснение и наклон. Фильтр можно применять к любому экранному объекту (т. е. объекту, наследуемому от класса DisplayObject), например MovieClip, SimpleButton, TextField, Video, а также объектам BitmapData.

Создать фильтр «Свертывание» можно с помощью синтаксиса new ConvolutionFilter(). Выбор фильтра зависит от объекта, к которому требуется его применить:

  • Если фильтр применяется к фрагментам ролика, текстовым полям, кнопкам или видео, следует использовать свойство filters (наследуемое от класса DisplayObject). При задании объекту свойства filters сам объект не изменяется, а фильтр можно удалить через свойство filters.
  • Для применения фильтров к объектам BitmapData следует пользоваться методом BitmapData.applyFilter(). При вызове applyFilter() для объекта BitmapData из исходного объекта BitmapData и объекта фильтра формируется изображение с применением фильтра.

При применении фильтра к экранному объекту свойство cacheAsBitmap этого объекта принимает значение true. Если удалить все фильтры, будет восстановлено исходное значение cacheAsBitmap.

Фильтр не применяется, если полученное изображение превышает максимальные размеры. В AIR 1.5 и Flash Player 10 максимальный размер изображения составляет 8 191 пикселей в ширину или высоту, а общее количество пикселей не может превышать 16 777 215. (Т. е. если ширина изображения составляет 8 191 пикселя, его высота не может быть больше 2 048 пикселей.) В проигрывателе Flash Player 9 и более ранних версий, а также в AIR 1.1 и более ранних версий, это ограничение составляет 2 880 пикселей в высоту и 2 880 пикселей в ширину. Например, при масштабировании большого фрагмента ролика, к которому применен фильтр, фильтр будет снят, если получившееся изображение превысит максимальные размеры.

В следующем примере показано, как различные фильтры свертывания применяются к файлу изображения. Конструктор фильтров четыре раза вызывает buildChild() для загрузки и отображения четырех экземпляров изображения. Каждый вызов buildChild() использует в качестве аргумента функцию, которая не применяет фильтры к первому экземпляру, но применяет разные фильтры свертывания к каждому последующему экземпляру.

Функция buildChild() создает новый объект Loader и присваивает ему имя loader. При каждом вызове buildChild() нужно назначать объекту Loader прослушиватель событий, который будет регистрировать события complete, обрабатываемые функцией, которая передается к buildChild().

Функции applyBrightness(), applySharpness() и applyOutline() применяют к массиву matrix разные значения для получения различных эффектов ConvolutionFilter.

Примечание. Для оптимального результата рекомендуется использовать изображения шириной около 80 пикселей. Имя и расположение файла с изображением должны совпадать со значением, которое передается свойству url. Например, значение, передаваемое свойству url в данном примере, указывает на файл с именем Image.jpg, который хранится в том же каталоге, что и SWF-файл.

package { import flash.display.DisplayObject; import flash.display.Loader; import flash.display.Sprite; import flash.events.*; import flash.filters.BitmapFilter; import flash.filters.ConvolutionFilter; import flash.net.URLRequest; import flash.text.TextField; import flash.text.TextFieldAutoSize; public class ConvolutionFilterExample extends Sprite { private var size:uint = 140; private var url:String = "Image.jpg"; public function ConvolutionFilterExample() { buildChild(applyNothing); buildChild(applyBrightness); buildChild(applySharpness); buildChild(applyOutline); } private function buildChild(loadHandler:Function):void { var loader:Loader = new Loader(); loader.x = numChildren * size; loader.y = size; loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); if(loadHandler != null) { loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadHandler); } var request:URLRequest = new URLRequest(url); loader.load(request); addChild(loader); } private function applyNothing(event:Event):void { var child:DisplayObject = DisplayObject(event.target.loader); applyLabel(child, "no filter"); } private function applyBrightness(event:Event):void { var child:DisplayObject = DisplayObject(event.target.loader); var matrix:Array = [5, 5, 5, 5, 0, 5, 5, 5, 5]; applyFilter(child, matrix); applyLabel(child, "brightness"); } private function applySharpness(event:Event):void { var child:DisplayObject = DisplayObject(event.target.loader); var matrix:Array = [0, -1, 0, -1, 20, -1, 0, -1, 0]; applyFilter(child, matrix); applyLabel(child, "sharpness"); } private function applyOutline(event:Event):void { var child:DisplayObject = DisplayObject(event.target.loader); var matrix:Array = [-30, 30, 0, -30, 30, 0, -30, 30, 0]; applyFilter(child, matrix); applyLabel(child, "outline"); } private function applyFilter(child:DisplayObject, matrix:Array):void { var matrixX:Number = 3; var matrixY:Number = 3; var divisor:Number = 9; var filter:BitmapFilter = new ConvolutionFilter(matrixX, matrixY, matrix, divisor); var filters:Array = new Array(); filters.push(filter); child.filters = filters; } private function applyLabel(child:DisplayObject, label:String):void { var tf:TextField = new TextField(); tf.x = child.x; tf.y = child.height; tf.autoSize = TextFieldAutoSize.LEFT; tf.text = label; addChild(tf); } private function ioErrorHandler(event:IOErrorEvent):void { trace("Unable to load image: " + url); } } }
flash.display.BitmapData.applyFilter()flash.display.DisplayObject.filtersflash.display.DisplayObject.cacheAsBitmapматрицаConvolutionFilter Инициализирует новый экземпляр ConvolutionFilter с заданными параметрами.matrixXNumber0Размер x матрицы (число столбцов в матрице). Значением по умолчанию является 0. matrixYNumber0Размер y матрицы (число столбцов в матрице). Значением по умолчанию является 0. matrixArraynullМассив значений, используемых для матричных преобразований. Число элементов массива должно равняться matrixX ~~ matrixY. divisorNumber1.0Делитель, используемый при проведении преобразования матрицы. Значением по умолчанию является 1. Делитель, являющийся суммой всех значений матрицы, выравнивает интенсивность цвета получаемого изображения. Значение 0 игнорируется, а вместо него используется значение по умолчанию. biasNumber0.0Степень смещения, добавляемого к результату преобразования матрицы. Значением по умолчанию является 0. preserveAlphaBooleantrueЗначение false указывает, что значение альфа-канала не сохранено, а свертывание применяется ко всем каналам, включая альфа-канал. Значение true указывает, что свертывание применяется только к цветовым каналам. По умолчанию используется значение true. clampBooleantrueДля пикселей, лежащих за пределами исходного изображения, значение true указывает на то, что входное изображение растянуто по каждой из границ методом дублирования значений цветов на данном крае входного изображения. Значение false указывает на то, что следует использовать другой цвет, согласно значениям свойств color и alpha. Значение по умолчанию — true. coloruint0Шестнадцатеричный цвет для замены пикселей, отсутствующих в исходном изображении. alphaNumber0.0Значение альфа-канала для цвета замены. Инициализирует новый экземпляр ConvolutionFilter с заданными параметрами. clone Возвращает копию данного объекта фильтра.Новый экземпляр ConvolutionFilter с теми же свойствами, что и оригинальный экземпляр ConvolutionFilter. flash.filters:BitmapFilter Возвращает копию данного объекта фильтра. alpha Значение альфа-прозрачности цвета замены.Number Значение альфа-прозрачности цвета замены. Действительны значения от 0 до 1,0. По умолчанию — 0. Например, при 0,25 устанавливается 25-процентная прозрачность. bias Степень смещения, добавляемого к результату преобразования матрицы.Number Степень смещения, добавляемого к результату преобразования матрицы. Смещение увеличивает значение цвета в каждом канале, так что темные цвета кажутся светлее. Значением по умолчанию является 0. clamp Определяет, зафиксировано ли изображение.Boolean Определяет, зафиксировано ли изображение. Для пикселей, лежащих за пределами исходного изображения, значение true указывает, что входное изображение растянуто по каждой из границ методом дублирования значений цветов на соответствующем крае входного изображения. Значение false указывает на то, что следует использовать другой цвет, согласно значениям свойств color и alpha. Значение по умолчанию — true. В следующем примере показан код для создания двух блоков с помощью класса BitmapData, из которых один в два раза меньше другого. При первой загрузке примера больший блок рисуется внутри mc с помощью attachBitmap(). При щелчке по mc и вызове метода applyFilter() экземпляр largeBox класса BitmapData снова отрисовывается, а исходным растровым изображением при этом служит smallBox. Так как метод applyFilter() рисует smallBox поверх Rectangle, ширина и высота которого задается по размеру largeBox, исходное растровое изображение меньше, чем область отрисовки. Свойство clamp объекта ConvolutionFilter в этом случае имеет значение false, а область, не покрытая исходным растровым изображением, smallBox, имеет сплошную красную заливку, определяемую переменными clampColor и clampAlpha. package { import flash.display.Sprite; import flash.display.BitmapData; import flash.filters.ConvolutionFilter; import flash.text.TextField; import flash.geom.Rectangle; import flash.geom.Point; public class ConvolutionClampExample extends Sprite { // Variables that affect clamping: var clamp:Boolean = false; var clampColor:Number = 0xFF0000; var clampAlpha:Number = 1; // For illustration, keep other ConvolutionFilter variables neutral: var bias:Number = 0; var preserveAlpha:Boolean = false; // Also, construct a neutral matrix var matrixCols:Number = 3; var matrixRows:Number = 3; var matrix:Array = [ 1,1,1, 1,1,1, 1,1,1 ]; var filter:ConvolutionFilter = new ConvolutionFilter(matrixCols, matrixRows, matrix, matrix.length, bias, preserveAlpha, clamp, clampColor, clampAlpha); var largeBoxWidth:Number = 100; var largeBoxHeight:Number = 100; var largeBox:BitmapData = new BitmapData(largeBoxWidth, largeBoxWidth, true, 0xCC00FF00); var smallBoxWidth:Number = largeBoxWidth / 2; var smallBoxHeight:Number = largeBoxHeight / 2; var smallBox:BitmapData = new BitmapData(smallBoxWidth, smallBoxWidth, true, 0xCC0000FF); var mc:MovieClip = this.createEmptyMovieClip("mc", this.getNextHighestDepth()); mc.attachBitmap(largeBox, this.getNextHighestDepth()); mc.onPress = function() { largeBox.applyFilter(smallBox, new Rectangle(0,0, largeBoxWidth, largeBoxHeight), new Point(0,0), filter); } } } color Шестнадцатеричный цвет для замены пикселей, отсутствующих в исходном изображении.uint Шестнадцатеричный цвет для замены пикселей, отсутствующих в исходном изображении. Это значение в формате RGB без альфа-компонента. По умолчанию — 0. divisor Делитель, используемый при проведении преобразования матрицы.Number Делитель, используемый при проведении преобразования матрицы. Значением по умолчанию является 1. Делитель, являющийся суммой всех значений матрицы, смягчает интенсивность цвета получаемого изображения. Значение 0 игнорируется, а вместо него используется значение по умолчанию. matrixX Размер x матрицы (число столбцов в матрице).Number Размер x матрицы (число столбцов в матрице). Значением по умолчанию является 0. matrixY Измерение y матрицы (число столбцов в матрице).Number Размер y матрицы (число столбцов в матрице). Значением по умолчанию является 0. matrix Массив значений, используемых для матричных преобразований.ArrayМассив при назначении принимает значение null. TypeErrorTypeError Массив значений, используемых для матричных преобразований. Число элементов массива должно равняться matrixX ~~ matrixY.

Свертывание матрицы исходит из размерности матрицы n x m, в которой описано, как значение каждого пикселя входного изображения сочетается со значением соседнего пикселя и какое значение получается в результате. Каждый получаемый пиксель определяется применением матрицы к соответствующему исходному пикселю и соседним с ним пикселям.

При свертывании матрицы 3 x 3 для каждого отдельного цветового канала используется следующая формула:


	dst (x, y) = ((src (x-1, y-1) ~~ a0 + src(x, y-1) ~~ a1....
	                  src(x, y+1) ~~ a7 + src (x+1,y+1) ~~ a8) / divisor) + bias
	

Некоторые фильтры работают быстрее при использовании процессоров с аппаратным ускорением SSE (Streaming SIMD Extensions). Ниже приведены критерии для ускорения операций свертывания:

  • Фильтр должен иметь размерность 3x3.
  • Все элементы фильтра должны быть целыми в диапазоне от -127 до +127.
  • Сумма всех элементов фильтра не должна превышать 127.
  • Если один из элементов фильтра отрицательный, делитель должен быть от 2,00001 до 256.
  • Если все элементы положительные, делитель должен быть от 1,1 до 256.
  • Смещение должно быть представлено целым числом.

Примечание. При создании фильтра свертывания с помощью конструктора без параметров порядок, в котором задаются значения для свойств матрицы, влияет на поведение фильтра. В следующем случае при назначении массива матрицы свойства matrixX и matrixY по-прежнему имеют значение 0 (значение по умолчанию):

public var myfilter:ConvolutionFilter = new ConvolutionFilter(); myfilter.matrix = [0, 0, 0, 0, 1, 0, 0, 0, 0]; myfilter.matrixX = 3; myfilter.matrixY = 3;

В следующем случае при назначении массива матрицы свойства matrixX и matrixY по-прежнему имеют значение 3:

public var myfilter:ConvolutionFilter = new ConvolutionFilter(); myfilter.matrixX = 3; myfilter.matrixY = 3; myfilter.matrix = [0, 0, 0, 0, 1, 0, 0, 0, 0];
preserveAlpha Определяет, сохраняется ли альфа-канал без эффекта фильтра или фильтр свертывания применяется к альфа-каналу так же, как и к цветовым каналам.Boolean Определяет, сохраняется ли альфа-канал без эффекта фильтра или фильтр свертывания применяется к альфа-каналу так же, как и к цветовым каналам. Значение false указывает, что свертывание применяется ко всем каналам, включая альфа-канал. Значение true указывает, что свертывание применяется только к цветовым каналам. По умолчанию используется значение true.
GlowFilter Класс GlowFilter позволяет применять эффект свечения к экранным объектам.Позволяет добавлять эффект «Свечение». flash.filters:BitmapFilter Класс GlowFilter позволяет применять эффект свечения к экранным объектам. Существует несколько вариантов выбора стиля свечения, включая внутреннее и внешнее свечения и эффект выбивки. Фильтр свечения похож на фильтр тени, у которого свойствам distance и angle присвоено значение 0. Фильтр можно применять к любому экранному объекту (т. е. объекту, наследуемому от класса DisplayObject), например MovieClip, SimpleButton, TextField, Video, а также объектам BitmapData.

Выбор фильтра зависит от объекта, к которому требуется его применить:

  • Применить фильтр к экранным объектам можно с помощью свойства filters (наследуется от DisplayObject). При задании объекту свойства filters сам объект не изменяется, а фильтр можно удалить через свойство filters.
  • Для применения фильтров к объектам BitmapData следует пользоваться методом BitmapData.applyFilter(). При вызове applyFilter() для объекта BitmapData из исходного объекта BitmapData и объекта фильтра формируется изображение с применением фильтра.

При применении фильтра к визуализируемому объекту свойство cacheAsBitmap этого объекта принимает значение true. Если удалить все фильтры, будет восстановлено исходное значение cacheAsBitmap.

Этот фильтр поддерживает масштабирование сцены. Тем не менее, он не поддерживает общее масштабирование, повороты и искажение. Если сам объект увеличен или уменьшен (т. е. если свойства scaleX и scaleY принимают значение, отличное от 1,0), фильтр не масштабируется. Он масштабируется, только когда пользователь применяет увеличение к самой сцене.

Фильтр не применяется, если полученное изображение превышает максимальные размеры. В AIR 1.5 и Flash Player 10 максимальный размер изображения составляет 8 191 пикселей в ширину или высоту, а общее количество пикселей не может превышать 16 777 215. (Т. е. если ширина изображения составляет 8 191 пикселя, его высота не может быть больше 2 048 пикселей.) В проигрывателе Flash Player 9 и более ранних версий, а также в AIR 1.1 и более ранних версий, это ограничение составляет 2 880 пикселей в высоту и 2 880 пикселей в ширину. Например, при масштабировании большого фрагмента ролика, к которому применен фильтр, фильтр будет снят, если получившееся изображение превысит максимальные размеры.

При выполнении приведенного ниже кода будет нарисован квадрат и к нему будет применен фильтр «Размытие». Порядок выполнения кода таков:
  1. Импортируется требуемый класс.
  2. Объявляются три свойства метода draw, который использует методы класса Graphics, полученные через свойство graphics спрайта для рисования оранжевого квадрата.
  3. Создается функция конструктора, которая выполняет следующее:
    • Вызывает функцию draw для создания прямоугольника.
    • Создает объект BitmapFilter glowFilter и присваивает ему значения, возвращенные функцией getBitmapFilter().
    • Присваивает массив значений объекта glowFilter свойству filters корневого экранного объекта. В этом случае все дочерние элементы корневого экранного объекта наследуют свойства фильтра свечения. Так, прямоугольник, созданный функцией draw(), отображает свойства фильтра свечения.
package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.filters.BitmapFilter; import flash.filters.BitmapFilterQuality; import flash.filters.GlowFilter; public class GlowFilterExample extends Sprite { private var bgColor:uint = 0xFFCC00; private var size:uint = 80; private var offset:uint = 50; public function GlowFilterExample() { //draw the rectangle using the draw() function below draw(); //assign the values from getBitmapFilter function below //to a BitmapFilter object "glowFilter" var glowFilter:BitmapFilter = getBitmapFilter(); //populate the filters property of the root display object with the array of values //from the glowFilter object. filters = [ glowFilter ]; } private function getBitmapFilter():BitmapFilter { var color:Number = 0x33CCFF; var alpha:Number = 0.8; var blurX:Number = 35; var blurY:Number = 35; var strength:Number = 2; var inner:Boolean = false; var knockout:Boolean = false; var quality:Number = BitmapFilterQuality.HIGH; return new GlowFilter(color, alpha, blurX, blurY, strength, quality, inner, knockout); } private function draw():void { graphics.beginFill(bgColor); graphics.drawRect(offset, offset, size, size); graphics.endFill(); } } }
flash.display.BitmapData.applyFilter()flash.display.DisplayObject.filtersflash.display.DisplayObject.cacheAsBitmapflash.display.DisplayObject.scaleXflash.display.DisplayObject.scaleYflash.filters.DropShadowFilter.distanceflash.filters.DropShadowFilter.angleGlowFilter Инициализирует новый экземпляр GlowFilter с заданными параметрами.coloruint0xFF0000Цвет свечения в шестнадцатеричном формате 0xRRGGBB. Значение по умолчанию — 0xFF0000. alphaNumber1.0Значение альфа-прозрачности цвета. Действительны значения от 0 до 1. Например, при 0,25 устанавливается 25-процентная прозрачность. blurXNumber6.0Степень размытия по горизонтали. Действительны значения от 0 до 255 (плавающая запятая). Значения, являющиеся степенью 2 (т. е. 2, 4, 8, 16 и 32), оптимизируются и выполняются быстрее, чем остальные. blurYNumber6.0Степень размытия по вертикали. Действительны значения от 0 до 255 (плавающая запятая). Значения, являющиеся степенью 2 (т. е. 2, 4, 8, 16 и 32), оптимизируются и выполняются быстрее, чем остальные. strengthNumber2Степень вдавливания или нанесения. Чем выше значение, тем более насыщен цвет тени и тем сильнее контраст между свечением и фоном. Действительны значения от 0 до 255. qualityint1Заданное число применений фильтра. Используйте константы BitmapFilterQuality:
  • BitmapFilterQuality.LOW
  • BitmapFilterQuality.MEDIUM
  • BitmapFilterQuality.HIGH

Подробные сведения см. в описании свойства quality.

innerBooleanfalseОпределяет, является ли свечение внутренним свечением. Значение true говорит о том, что свечение внутреннее. Значение false задает внешнее свечение (свечение вокруг внешнего контура объекта). knockoutBooleanfalseОпределяет, применяется ли к объекту эффект выбивки. Значение true делает заливку объекта прозрачной и делает видимым цвет фона документа.
Инициализирует новый экземпляр GlowFilter с заданными параметрами.
BitmapFilterQualityGlowFilter.quality
clone Возвращает копию данного объекта фильтра.Новый экземпляр GlowFilter со всеми свойствами оригинального экземпляра GlowFilter. flash.filters:BitmapFilter Возвращает копию данного объекта фильтра. alpha Значение альфа-прозрачности цвета.Number Значение альфа-прозрачности цвета. Действительны значения от 0 до 1. Например, при 0,25 устанавливается 25-процентная прозрачность. Значением по умолчанию является 1. blurX Степень размытия по горизонтали.Number Степень размытия по горизонтали. Действительны значения от 0 до 255 (плавающая запятая). Значением по умолчанию является 6. Значения, являющиеся степенью 2 (т. е. 2, 4, 8, 16 и 32), оптимизируются и выполняются быстрее, чем остальные. blurY Степень размытия по вертикали.Number Степень размытия по вертикали. Действительны значения от 0 до 255 (плавающая запятая). Значением по умолчанию является 6. Значения, являющиеся степенью 2 (т. е. 2, 4, 8, 16 и 32), оптимизируются и выполняются быстрее, чем остальные. color Цвет свечения.uint Цвет свечения. Действительны значения в шестнадцатеричном формате 0xRRGGBB. Значение по умолчанию — 0xFF0000. inner Определяет, является ли свечение внутренним свечением.Boolean Определяет, является ли свечение внутренним свечением. Значение true говорит о том, что свечение внутреннее. Значение false задает внешнее свечение (свечение вокруг внешнего контура объекта). knockout Определяет, применяется ли к объекту эффект выбивки.Boolean Определяет, применяется ли к объекту эффект выбивки. Значение true делает заливку объекта прозрачной и делает видимым цвет фона документа. Значение по умолчанию — false (без эффекта выбивки). quality Заданное число применений фильтра.int Заданное число применений фильтра. Значение по умолчанию — BitmapFilterQuality.LOW, что эквивалентно однократному применению фильтра. Значение BitmapFilterQuality.MEDIUM применяет фильтр дважды; значение BitmapFilterQuality.HIGH — трижды. Фильтры с более низкими значениями выполняются быстрее.

Для большинства приложений достаточно значения quality на уровне «low» («низкое»), «medium» («среднее») или «high» («высокое»). Хотя можно использовать дополнительные числовые значения до 15 для получения разнообразных эффектов, более высокие значения выполняются дольше. Вместо увеличения значения quality можно просто увеличить значения свойств blurX и blurY. Это даст похожий эффект, а выполнение будет происходить быстрее.

flash.filters.BitmapFilterQuality
strength Степень вдавливания или нанесения.Number Степень вдавливания или нанесения. Чем выше значение, тем более насыщен цвет тени и тем сильнее контраст между свечением и фоном. Действительны значения от 0 до 255. По умолчанию — 2.
ShaderFilter Класс ShaderFilter применяет фильтр, выполняя шейдеры на объекте, к которому применяется фильтр.flash.filters:BitmapFilter Класс ShaderFilter применяет фильтр, выполняя шейдеры на объекте, к которому применяется фильтр. Объект, к которому применен фильтр, используется в качестве входящих данных для шейдера, а выходные данные после выполнения шейдера являются результатом применения фильтра.

Новый фильтр можно создать с помощью конструктора new ShaderFilter(). Выбор фильтра зависит от объекта, к которому требуется его применить:

  • Если фильтр применяется к фрагментам ролика, текстовым полям, кнопкам или видео, следует использовать свойство filters (наследуемое от класса DisplayObject). При задании объекту свойства filters сам объект не изменяется, а фильтр можно удалить через свойство filters.
  • Для применения фильтров к объектам BitmapData следует пользоваться методом BitmapData.applyFilter(). При вызове applyFilter() для объекта BitmapData из исходного объекта BitmapData и объекта фильтра формируется изображение с применением фильтра.

При применении фильтра к экранному объекту свойство cacheAsBitmap этого объекта принимает значение true. Если удалить все фильтры, будет восстановлено исходное значение cacheAsBitmap.

Этот фильтр поддерживает масштабирование рабочей области. Тем не менее, он не поддерживает общее масштабирование, повороты и искажение. Если сам объект увеличен или уменьшен (т. е. если свойства scaleX и scaleY не равны 100%), фильтр не масштабируется. Он масштабируется, только когда пользователь применяет увеличение к самой рабочей области.

Фильтр не применяется, если полученное изображение превышает максимальные размеры. В AIR 1.5 и Flash Player 10 максимальный размер изображения составляет 8 191 пикселей в ширину или высоту, а общее количество пикселей не может превышать 16 777 215. (Т. е. если ширина изображения составляет 8 191 пикселя, его высота не может быть больше 2 048 пикселей.) В проигрывателе Flash Player 9 и более ранних версий, а также в AIR 1.1 и более ранних версий, это ограничение составляет 2 880 пикселей в высоту и 2 880 пикселей в ширину. Например, при масштабировании большого фрагмента ролика, к которому применен фильтр, фильтр будет снят, если получившееся изображение превысит максимальные размеры.

Для задания экземпляра Shader, который будет использоваться вместе с фильтром, необходимо передать экземпляр Shader в виде аргумента конструктору ShaderFilter() или задать его как значение свойства shader.

Чтобы действие Shader не было ограничено пределами объекта, к которому применен фильтр, пользуйтесь свойствами leftExtension, rightExtension, topExtension и bottomExtension.

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

Обратите внимание, что в этом примере мы исходим из того, что существует файл байт-кодов с именем gradient.pbj, хранящийся в каталоге, который является выходным для приложения.

// // Source code for the shader: // <languageVersion : 1.0;> kernel RedGradientFilter < namespace: "Adobe::Example"; vendor: "Adobe examples"; version: 1; description: "Applies a gradient across the red channel of the input image."; > { input image4 src; output pixel4 dst; parameter float width < description: "The width of the image to which the shader is applied."; minValue: 0.0; >; void evaluatePixel() { pixel4 temp = sampleNearest(src, outCoord()); temp.r = 1.0 - (outCoord().x * (1.0 / width)); dst = temp; } } // // ActionScript source code: // package { import flash.display.Shader; import flash.display.Sprite; import flash.events.Event; import flash.filters.ShaderFilter; import flash.net.URLLoader; import flash.net.URLLoaderDataFormat; import flash.net.URLRequest; public class ShaderFilterExample extends Sprite { private var loader:URLLoader; private var s:Sprite; public function ShaderFilterExample() { loader = new URLLoader(); loader.dataFormat = URLLoaderDataFormat.BINARY; loader.addEventListener(Event.COMPLETE, loadCompleteHandler); loader.load(new URLRequest("gradient.pbj")); s = new Sprite(); s.graphics.beginFill(0x009900); s.graphics.drawCircle(100, 100, 100); addChild(s); } private function loadCompleteHandler(event:Event):void { var shader:Shader = new Shader(loader.data); shader.data.width.value = [s.width]; var gradientFilter:ShaderFilter = new ShaderFilter(shader); s.filters = [gradientFilter]; } } }
flash.display.DisplayObject.filtersflash.display.DisplayObject.cacheAsBitmapflash.display.BitmapData.applyFilter()flash.display.ShaderShaderFilter Создает новый фильтр «Шейдер».shaderflash.display:ShadernullШейдер для использования с этим фильтром. Подробные сведения и ограничения, которым должен подчиняться шейдер, см. в описании свойства shader. Создает новый фильтр «Шейдер». shaderbottomExtension Прирост в пикселях с нижней стороны целевого объекта.int0 Прирост в пикселях с нижней стороны целевого объекта.

Прирост — это область за границами целевого объекта, передаваемая шейдеру во время выполнения. Во время выполнения Flash Player или AIR вычисляет нормальные границы фрагмента ролика и расширяет их в соответствии со значениями leftExtension, rightExtension, topExtension и bottomExtension.

leftExtension Прирост в пикселях с левой стороны целевого объекта.int0 Прирост в пикселях с левой стороны целевого объекта.

Прирост — это область за границами целевого объекта, передаваемая шейдеру во время выполнения. Во время выполнения Flash Player или AIR вычисляет нормальные границы фрагмента ролика и расширяет их в соответствии со значениями leftExtension, rightExtension, topExtension и bottomExtension.

rightExtension Прирост в пикселях с правой стороны целевого объекта.int0 Прирост в пикселях с правой стороны целевого объекта.

Прирост — это область за границами целевого объекта, передаваемая шейдеру во время выполнения. Во время выполнения Flash Player или AIR вычисляет нормальные границы фрагмента ролика и расширяет их в соответствии со значениями leftExtension, rightExtension, topExtension и bottomExtension.

shader Шейдер для использования с этим фильтром.flash.display:Shader Шейдер для использования с этим фильтром.

Шейдер, назначенный свойству shader, должен указывать хотя бы на одно входное значение image4. В коде не обязательно указывать код с помощью ассоциативного свойства input объекта ShaderInput. Вместо этого объект, к которому применяется фильтр, автоматически становится первым значением входа (вход с index 0). Шейдер, используемый в качестве фильтра, может задавать более одного входа. В этом случае любые дополнительные входы должны быть заданы через свойство input экземпляра ShaderInput.

При назначении экземпляра шейдера данному свойству создается внутренняя копия шейдера, а операция фильтра использует эту копию, а не ссылку на исходный файл Все изменения, производимые над шейдером, например изменение значения параметров, входа или байт-кода, не влияют на скопированный шейдер, к которому обращается фильтр. Чтобы изменения отражались и на шейдере при выводе результатов фильтра, необходимо переназначить экземпляр шейдера свойству shader. Как и в случае с другими фильтрами, чтобы применить изменения фильтра, необходимо также повторно назначить экземпляр ShaderFilter свойству filters экранного объекта.

topExtension Прирост в пикселях с верхней стороны целевого объекта.int0 Прирост в пикселях с верхней стороны целевого объекта.

Прирост — это область за границами целевого объекта, передаваемая шейдеру во время выполнения. Во время выполнения Flash Player или AIR вычисляет нормальные границы фрагмента ролика и расширяет их в соответствии со значениями leftExtension, rightExtension, topExtension и bottomExtension.