| 套件 | 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.ALPHABitmapDataChannel.BLUEBitmapDataChannel.GREENBitmapDataChannel.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.ALPHABitmapDataChannel.BLUEBitmapDataChannel.GREENBitmapDataChannel.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
隱藏繼承公用屬性
顯示繼承公用屬性