パッケージflash.filters
クラスpublic final class DisplacementMapFilter
継承DisplacementMapFilter Inheritance BitmapFilter Inheritance Object

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

DisplacementMapFilter クラスは、指定された BitmapData オブジェクト (置き換えマップイメージと言います) のピクセル値を使用して、オブジェクトの置き換え (変位) を実行します。このフィルタを使用して、MovieClip、SimpleButton、TextField、Video オブジェクトなどの DisplayObject クラスから継承したオブジェクト、および 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)) から取得します。

フィルタで使用するマップイメージは、ステージの拡大 / 縮小率に一致するように拡大 / 縮小されます。オブジェクト自体を拡大 / 縮小する場合には拡大 / 縮小されません。

このフィルタはステージの拡大 / 縮小に対応していますが、通常の拡大 / 縮小、回転、傾斜には対応していません。オブジェクト自体を拡大 / 縮小する場合 (scaleXscaleY プロパティが 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
y の結果を変位させる場合にどのカラーチャンネルをマップイメージで使用するかを指定します。
DisplacementMapFilter
 Inheritedconstructor : Object
特定のオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。
Object
  mapBitmap : BitmapData
置き換えマップデータが含まれる BitmapData オブジェクトです。
DisplacementMapFilter
  mapPoint : Point
マップイメージの左上隅を基準としたターゲット表示オブジェクトの左上隅のオフセットが含まれる値です。
DisplacementMapFilter
  mode : String
フィルタのモードです。
DisplacementMapFilter
 Inheritedprototype : Object
[static] クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。
Object
  scaleX : Number
マップ計算の x 置き換え結果を拡大 / 縮小する場合に使用する乗数です。
DisplacementMapFilter
  scaleY : Number
マップ計算の y 置き換え結果を拡大 / 縮小する場合に使用する乗数です。
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  [read-write]

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

範囲外置き換えの場合に使用するアルファ透明度値を指定します。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  [read-write]

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

範囲外置き換えの場合に使用する色を指定します。置き換えの有効範囲は 0.0 ~ 1.0 です。この値は、16 進数形式です。color に対する初期設定値は 0 です。mode プロパティが DisplacementMapFilterMode.COLOR に設定されている場合は、このプロパティを使用します。


実装
    public function get color():uint
    public function set color(value:uint):void
componentXプロパティ 
componentX:uint  [read-write]

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

x の結果を変位させる場合にどのカラーチャンネルをマップイメージで使用するかを指定します。指定できる値は、BitmapDataChannel 定数です。


実装
    public function get componentX():uint
    public function set componentX(value:uint):void

関連項目

componentYプロパティ 
componentY:uint  [read-write]

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

y の結果を変位させる場合にどのカラーチャンネルをマップイメージで使用するかを指定します。指定できる値は、BitmapDataChannel 定数です。


実装
    public function get componentY():uint
    public function set componentY(value:uint):void

関連項目

mapBitmapプロパティ 
mapBitmap:BitmapData  [read-write]

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

置き換えマップデータが含まれる BitmapData オブジェクトです。


実装
    public function get mapBitmap():BitmapData
    public function set mapBitmap(value:BitmapData):void

例外
TypeError — BitmapData は、設定時に null に設定されます。

関連項目

mapPointプロパティ 
mapPoint:Point  [read-write]

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

マップイメージの左上隅を基準としたターゲット表示オブジェクトの左上隅のオフセットが含まれる値です。


実装
    public function get mapPoint():Point
    public function set mapPoint(value:Point):void

例外
TypeError — Point は、設定時に null に設定されます。

関連項目

modeプロパティ 
mode:String  [read-write]

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

フィルタのモードです。指定できる値は、DisplacementMapFilterMode 定数です。


実装
    public function get mode():String
    public function set mode(value:String):void

例外
TypeError — ストリングは、設定時に null に設定されます。
 
ArgumentError — モードストリングは有効ではありません。

関連項目

scaleXプロパティ 
scaleX:Number  [read-write]

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

マップ計算の x 置き換え結果を拡大 / 縮小する場合に使用する乗数です。


実装
    public function get scaleX():Number
    public function set scaleX(value:Number):void
scaleYプロパティ 
scaleY:Number  [read-write]

言語バージョン : ActionScript 3.0
Player のバージョン : 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
Player のバージョン : Flash Player 9

指定されたパラメータで DisplacementMapFilter インスタンスを初期化します。

パラメータ
mapBitmap:BitmapData (default = null) — 置き換えマップデータが含まれる BitmapData オブジェクトです。
 
mapPoint:Point (default = null) — マップイメージの左上隅を基準としたターゲット表示オブジェクトの左上隅のオフセットが含まれる値です。
 
componentX:uint (default = 0)x の結果を変位させる場合にどのカラーチャンネルをマップイメージで使用するかを指定します。指定できる値は、BitmapDataChannel 定数です。
 
componentY:uint (default = 0)y の結果を変位させる場合にどのカラーチャンネルをマップイメージで使用するかを指定します。指定できる値は、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 です。このパラメータは、modeDisplacementMapFilterMode.COLOR に設定する場合に使用します。
 
alpha:Number (default = 0.0) — 範囲外置き換えの場合に使用するアルファ値を指定します。0.0 ~ 1.0 に正規化した値を指定します。たとえば、.25 を指定すると、透明度の値として 25% が設定されます。このパラメータは、modeDisplacementMapFilterMode.COLOR に設定する場合に使用します。

関連項目

メソッドの詳細
clone()メソッド
public override function clone():BitmapFilter

言語バージョン : ActionScript 3.0
Player のバージョン : Flash Player 9

このフィルタオブジェクトのコピーを返します。

戻り値
BitmapFilter — 元のインスタンスと同じプロパティをすべて備えた新しい DisplacementMapFilter インスタンスです。
例の使用法
DisplacementMapFilterExample.as

次の例では、放射状グラデーションの塗りの四角形の描画、テキストフィールドの作成、BitmapData オブジェクトの作成を行い、また置き換えマップフィルタを DisplacementMapFilterExample オブジェクトに適用します。この例に対する一般的なワークフローは、次のようになります。
  1. このクラスは背景色、テキストフィールドラベル、およびさまざまな関数で使用するサイズおよびオフセットの変数を定義します。
  2. コンストラクタ関数は draw() メソッドを呼び出します。このメソッドは、Graphics クラスのメソッドを使用して放射状グラデーション塗りの四角形を描画します。graphics は、Sprite を拡張する DisplacementMapFilterExample オブジェクトのプロパティです。
  3. このコンストラクタ関数は createLabel() メソッドを呼び出します。このメソッドは labelText の値を表示するテキストフィールドを作成して、表示リストに追加します。
  4. このコンストラクタ関数は、createFilter() メソッドを呼び出します。このメソッドは以下の処理を行います。
    • フィルタオブジェクトの filter という名前の変数を作成します。
    • getDisplacementMapFilter() メソッドを呼び出し、その戻り値を filter 変数に割り当てます。
    • filter を DisplacementFilterExample (メインクラス) の filters プロパティに渡します。
  5. getBitmapFilter() メソッドは mapBitmap という名前の BitmapData オブジェクトを作成し、このオブジェクトに createBitmapData() メソッドの結果を割り当てます。mapBitmap オブジェクトは、他の変数と共に、新しい置き換えマップフィルタを定義します。
  6. createBitmapData() メソッドは、DisplacementMapFilterExample オブジェクトの現在の内容に基づいた新しい BitmapData オブジェクトを作成します。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);
        }
    }
}




 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート

現在のページ: http://livedocs.adobe.com/flash/9.0_jp/ActionScriptLangRefV3/flash/filters/DisplacementMapFilter.html