套件 | flash.filters |
類別 | public final class DisplacementMapFilter |
繼承 | DisplacementMapFilter BitmapFilter Object |
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9 |
濾鏡的使用取決於濾鏡套用到的物件:
- 若要在顯示物件上套用濾鏡,請使用顯示物件的
filters
屬性。 設定物件的filters
屬性不會修改該物件,而且只要清除filters
屬性就可以移除濾鏡。 - 若要將濾鏡套用至 BitmapData 物件,請使用
BitmapData.applyFilter()
方法。 針對 BitmapData 物件呼叫applyFilter()
時會採用原始 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)
會從 mapBitmap
屬性取得 (x - mapPoint.x ,y - mapPoint.y)
位置上的 componentX
屬性顏色值。
該濾鏡使用的對應影像會配合舞台的縮放進行縮放。 當物件本身縮放時,濾鏡就不會跟著縮放。
這個濾鏡支援舞台縮放。然而,並不支援一般的縮放、旋轉或傾斜操作。 如果物件本身進行縮放 (假使 scaleX
和 scaleY
屬性設為 1.0 以外的值),則不會縮放濾鏡效果。 濾鏡只在使用者在「舞台」上放大顯示時才會進行縮放。
相關 API 元素
flash.display.BitmapData.applyFilter()
flash.display.DisplayObject.filters
flash.display.DisplayObject.cacheAsBitmap
flash.display.DisplayObject.filters
flash.display.DisplayObject.cacheAsBitmap
公用屬性
屬性 | 定義自 | ||
---|---|---|---|
alpha : Number
指定邊界外置換項目要使用的 Alpha 透明度值。 | DisplacementMapFilter | ||
color : uint
指定邊界外置換項目要使用的顏色。 | DisplacementMapFilter | ||
componentX : uint
說明對應影像要使用何種顏色色版來置換 x 結果。 | DisplacementMapFilter | ||
componentY : uint
說明對應影像要使用何種顏色色版來置換 y 結果。 | DisplacementMapFilter | ||
constructor : Object
類別物件的參照或是特定物件實體的建構函數。 | Object | ||
mapBitmap : BitmapData
含有置換對應資料的 BitmapData 物件。 | DisplacementMapFilter | ||
mapPoint : Point
值,包含目標顯示物件左上角到對應影像左上角的偏移值。 | DisplacementMapFilter | ||
mode : String
濾鏡模式。 | DisplacementMapFilter | ||
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 | ||
指出物件是否有已定義的指定屬性。 | Object | ||
指出 Object 類別的實體是否位於指定為參數的物件原型鏈中。 | Object | ||
指出指定的屬性是否存在,以及是否可列舉。 | Object | ||
為迴圈作業設定動態屬性的可用性。 | Object | ||
傳回代表此物件的字串,根據地區特定慣例進行格式化。 | Object | ||
會傳回指定之物件的字串形式。 | Object | ||
會傳回指定之物件的基本值。 | Object |
屬性詳細資訊
alpha | 屬性 |
color | 屬性 |
componentX | 屬性 |
componentX:uint
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9 |
說明對應影像要使用何種顏色色版來置換 x 結果。 可能的值為 BitmapDataChannel 常數:
BitmapDataChannel.ALPHA
BitmapDataChannel.BLUE
BitmapDataChannel.GREEN
BitmapDataChannel.RED
實作
public function get componentX():uint
public function set componentX(value:uint):void
相關 API 元素
componentY | 屬性 |
componentY:uint
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9 |
說明對應影像要使用何種顏色色版來置換 y 結果。 可能的值為 BitmapDataChannel 常數:
BitmapDataChannel.ALPHA
BitmapDataChannel.BLUE
BitmapDataChannel.GREEN
BitmapDataChannel.RED
實作
public function get componentY():uint
public function set componentY(value:uint):void
相關 API 元素
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。
|
相關 API 元素
mapPoint | 屬性 |
mode | 屬性 |
mode:String
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9 |
濾鏡模式。 可能的值為 DisplacementMapFilterMode 常數:
DisplacementMapFilterMode.WRAP
— 將置換值圍繞到原始影像的另一邊。DisplacementMapFilterMode.CLAMP
— 將置換值固定到原始影像的邊緣。DisplacementMapFilterMode.IGNORE
— 如果置換值超出範圍,則會忽略該置換並使用原始像素。DisplacementMapFilterMode.COLOR
— 如果置換值位於影像外,則替代color
和alpha
屬性中的值。
實作
public function get mode():String
public function set mode(value:String):void
擲回值
TypeError — 設定時,字串為 null
| |
ArgumentError — 模式字串不是有效的類型之一
|
相關 API 元素
scaleX | 屬性 |
scaleY | 屬性 |
建構函式詳細資料
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 |
執行階段版本: | 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 ) — 說明對應影像要使用何種顏色色版來置換 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。如果 mode 設為 DisplacementMapFilterMode.COLOR ,請使用這個參數。
| |
alpha:Number (default = 0.0 ) — 指定要對邊界外的置換項目使用何種 Alpha 值。 將值指定為介於 0.0 到 1.0 的正常值。例如,.25 會設定 25% 的透明度值。 如果 mode 設定為 DisplacementMapFilterMode.COLOR ,請使用此參數。
|
相關 API 元素
方法詳細資訊
clone | () | 方法 |
override public function clone():BitmapFilter
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9 |
傳回此濾鏡物件的副本。
傳回值BitmapFilter — 新的 DisplacementMapFilter 實體,其所有屬性都和原始實體的屬性相同。
|
範例 如何使用本範例
DisplacementMapFilterExample.as
下列範例會用放射性漸層填色繪製正方形、建立文字欄位、建立 BitmapData 物件,並將置換對應濾鏡套用至 DisplacementMapFilterExample 物件。 這個範例的一般工作流程如下:
- 此類別定義將用於各種函數中的背景顏色變數、文字欄位標籤變數,以及大小和偏移變數。
- 建構函數會呼叫
draw()
方法,使用 Graphics 類別的方法來繪製具有放射狀漸層填色的方形。 請注意,graphics
是 DisplacementMapFilterExample 物件的屬性,用於擴充 Sprite。 - 建構函數會呼叫
createLabel()
方法,建立顯示labelText
值的文字欄位,並將其新增到顯示清單。 - 建構函數會呼叫
createFilter()
方法來執行下列動作:- 建立名為
filter
的濾鏡物件變數。 - 呼叫
getDisplacementMapFilter()
方法並為其指定filter
變數的傳回值。 - 將
filter
傳入 DisplacementFilterExample 物件 (主類別) 的filters
屬性。
- 建立名為
getBitmapFilter()
方法會建立名為mapBitmap
的 BitmapData 物件,並為其指定createBitmapData()
方法的結果。mapBitmap
物件以及其他變數,會一起定義新的置換對應濾鏡。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); } } }
Tue Jun 12 2018, 03:47 PM Z