Пакетflash.filters
Классpublic final class DisplacementMapFilter
НаследованиеDisplacementMapFilter Inheritance BitmapFilter Inheritance Object

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

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

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

При применении фильтра к визуализируемому объекту свойство 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), фильтр не масштабируется. Он масштабируется, только когда пользователь применяет увеличение к самой сцене.

Посмотреть примеры

См. также

flash.display.BitmapData.applyFilter()
flash.display.DisplayObject.filters
flash.display.DisplayObject.cacheAsBitmap


Общедоступные свойства
 СвойствоОпределено
  alpha : Number
Задает значение альфа-прозрачности, применяемое для замещения "вне пределов".
DisplacementMapFilter
  color : uint
Задает цвет, используемый при смещениях, выходящих за пределы границ.
DisplacementMapFilter
  componentX : uint
Указывает цветовой канал, который следует использовать в изображении карты для замещения результата x.
DisplacementMapFilter
  componentY : uint
Указывает цветовой канал, который следует использовать в изображении карты для замещения результата у.
DisplacementMapFilter
 Inheritedconstructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта.
Object
  mapBitmap : BitmapData
Объект BitmapData, содержащий данные карты замещения.
DisplacementMapFilter
  mapPoint : Point
Значение, содержащее смещение левого верхнего угла целевого экранного объекта из левого верхнего угла изображения карты.
DisplacementMapFilter
  mode : String
Режим для фильтра.
DisplacementMapFilter
 Inheritedprototype : Object
[статические] Ссылка на модель объекта класса или функции.
Object
  scaleX : Number
Множитель, с помощью которого масштабируется результат x замещения, полученного в ходе вычисления карты.
DisplacementMapFilter
  scaleY : Number
Множитель, с помощью которого масштабируется результат у замещения, полученного в ходе вычисления карты.
DisplacementMapFilter
Общедоступные методы
 МетодОпределено
  
DisplacementMapFilter(mapBitmap:BitmapData = null, mapPoint:Point = null, componentX:uint = 0, componentY:uint = 0, scaleX:Number = 0.0, scaleY:Number = 0.0, mode:String = "wrap", color:uint = 0, alpha:Number = 0.0)
Инициализирует экземпляр DisplacementMapFilter с заданными параметрами.
DisplacementMapFilter
  
Возвращает копию данного объекта фильтра.
DisplacementMapFilter
 Inherited
Показывает, определено ли заданное свойство для объекта.
Object
 Inherited
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра.
Object
 Inherited
Показывает наличие заданного свойства и его перечисляемость.
Object
 Inherited
Задает доступность динамического свойства для операций цикла.
Object
 Inherited
Возвращает строковое представление заданного объекта.
Object
 Inherited
Возвращает элементарное значение заданного объекта.
Object
Сведения о свойстве
alphaсвойство
alpha:Number  [чтение и запись]

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Задает значение альфа-прозрачности, применяемое для замещения "вне пределов". Оно задается в виде нормализованного значения от 0,0 до 0,1. Например, при значении 0,25 устанавливается 25-процентная прозрачность. Значение по умолчанию 0. Это свойство используется, если свойство mode принимает значение DisplacementMapFilterMode.COLOR.


Реализация
    public function get alpha():Number
    public function set alpha(value:Number):void
colorсвойство 
color:uint  [чтение и запись]

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Задает цвет, используемый при смещениях, выходящих за пределы границ. Допустимый диапазон смещений — от 0,0 до 1,0. Значения задаются в шестнадцатеричном формате. Значение color по умолчанию — 0. Это свойство используется, если свойство mode принимает значение DisplacementMapFilterMode.COLOR.


Реализация
    public function get color():uint
    public function set color(value:uint):void
componentXсвойство 
componentX:uint  [чтение и запись]

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Указывает цветовой канал, который следует использовать в изображении карты для замещения результата x. Возможные значения являются константами BitmapDataChannel:


Реализация
    public function get componentX():uint
    public function set componentX(value:uint):void

См. также

componentYсвойство 
componentY:uint  [чтение и запись]

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Указывает цветовой канал, который следует использовать в изображении карты для замещения результата у. Возможные значения являются константами BitmapDataChannel:


Реализация
    public function get componentY():uint
    public function set componentY(value:uint):void

См. также

mapBitmapсвойство 
mapBitmap:BitmapData  [чтение и запись]

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Объект BitmapData, содержащий данные карты замещения.


Реализация
    public function get mapBitmap():BitmapData
    public function set mapBitmap(value:BitmapData):void

Выдает
TypeError — BitmapData при назначении принимает значение null.

См. также

mapPointсвойство 
mapPoint:Point  [чтение и запись]

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Значение, содержащее смещение левого верхнего угла целевого экранного объекта из левого верхнего угла изображения карты.


Реализация
    public function get mapPoint():Point
    public function set mapPoint(value:Point):void

Выдает
TypeError — Точка при назначении принимает значение null.

См. также

modeсвойство 
mode:String  [чтение и запись]

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Режим для фильтра. Возможные значения являются константами DisplacementMapFilterMode:


Реализация
    public function get mode():String
    public function set mode(value:String):void

Выдает
TypeError — Строка при назначении принимает значение null.
 
ArgumentError — Строка режима не относится к допустимым типам.

См. также

scaleXсвойство 
scaleX:Number  [чтение и запись]

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

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


Реализация
    public function get scaleX():Number
    public function set scaleX(value:Number):void
scaleYсвойство 
scaleY:Number  [чтение и запись]

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

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


Реализация
    public function get scaleY():Number
    public function set scaleY(value:Number):void
Сведения о конструкторе
DisplacementMapFilter()Конструктор
public function DisplacementMapFilter(mapBitmap:BitmapData = null, mapPoint:Point = null, componentX:uint = 0, componentY:uint = 0, scaleX:Number = 0.0, scaleY:Number = 0.0, mode:String = "wrap", color:uint = 0, alpha:Number = 0.0)

Язык версии : ActionScript 3.0
Версия продукта: Lite 2.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Инициализирует экземпляр DisplacementMapFilter с заданными параметрами.

Параметры
mapBitmap:BitmapData (default = null) — Объект BitmapData, содержащий данные карты замещения.
 
mapPoint:Point (default = null) — Значение, содержащее смещение левого верхнего угла целевого экранного объекта из левого верхнего угла изображения карты.
 
componentX:uint (default = 0) — Указывает цветовой канал, который следует использовать в изображении карты для замещения результата x. Возможными значениями являются константы BitmapDataChannel:
 
componentY:uint (default = 0) — Указывает цветовой канал, который следует использовать в изображении карты для замещения результата у. Возможными значениями являются константы BitmapDataChannel:
 
scaleX:Number (default = 0.0)Множитель, с помощью которого масштабируется результат x замещения, полученного в ходе вычисления карты.
 
scaleY:Number (default = 0.0) — Множитель, с помощью которого масштабируется результат y замещения, полученного в ходе вычисления карты.
 
mode:String (default = "wrap") — Режим фильтра. Возможными значениями являются константы DisplacementMapFilterMode:
 
color:uint (default = 0) — Задает цвет, используемый при смещениях, выходящих за пределы границ. Действительный диапазон смещений — от 0,0 до 1,0. Этот параметр следует использовать, если для mode установлено значение DisplacementMapFilterMode.COLOR.
 
alpha:Number (default = 0.0) — Задает значение альфа-канала, используемое при смещениях, выходящих за пределы границ. Оно задается в виде нормализованного значения от 0,0 до 0,1. Например, при значении 0,25 устанавливается 25-процентная прозрачность. Этот параметр используется, если для mode установлено значение DisplacementMapFilterMode.COLOR.

См. также

Сведения о методе
clone()метод
override public function clone():BitmapFilter

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Возвращает копию данного объекта фильтра.

Возвращает
BitmapFilter — Новый экземпляр DisplacementMapFilter с теми же свойствами, что и оригинальный экземпляр.
Примеры Как пользоваться примерами
DisplacementMapFilterExample.as

При выполнении кода, приведенного в примере ниже, будет нарисован квадрат с радиальной градиентной заливкой, создано текстовое поле, создан объект 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);
        }
    }
}