顯示對象過濾是通過將原始對象的副本緩存為透明位圖來工作的。
將濾鏡應(yīng)用于顯示對象后,只要此對象具有有效的濾鏡列表,Adobe Flash Player 就會將該
對象緩存為位圖。然后,將此位圖用作所有后續(xù)應(yīng)用的濾鏡效果的原始圖像。
每個顯示對象通常包含兩個位圖:一個包含原始未過濾的源顯示對象,另一個用于過濾后的
最終圖像。呈現(xiàn)時使用最終圖像。只要顯示對象不發(fā)生更改,最終圖像就不需要更新。
在運行時更改濾鏡
如果已經(jīng)對顯示對象應(yīng)用了一個或多個濾鏡,則無法向 filters 屬性數(shù)組添加其它濾鏡。若
要添加或更改應(yīng)用的這組濾鏡,需要創(chuàng)建整個濾鏡數(shù)組的副本,然后對此(臨時)數(shù)組進行
修改。然后,將此數(shù)組重新分配給顯示對象的 filters 屬性,這樣才能將濾鏡應(yīng)用于該對
象。
濾鏡和對象變形
在顯示對象的邊框矩形之外的任何過濾區(qū)域(例如投影)都不能視為可進行點擊檢測(確定
實例是否與其它實例重疊或交叉)的表面。由于 DisplayObject 類的點擊檢測方法是基于矢
量的,因此無法在位圖結(jié)果上執(zhí)行點擊檢測。例如,如果您對按鈕實例應(yīng)用斜角濾鏡,則在
該實例的斜角部分,點擊檢測不可用。
濾鏡不支持縮放、旋轉(zhuǎn)和傾斜;如果過濾的顯示對象本身進行了縮放(如果 scaleX 和
scaleY 不是 100%),則濾鏡效果將不隨該實例縮放。這意味著,實例的原始形狀將旋轉(zhuǎn)、
縮放或傾斜;而濾鏡不隨實例一起旋轉(zhuǎn)、縮放或傾斜。
可以使用濾鏡給實例添加動畫,以形成理想的效果,或者嵌套實例并使用 BitmapData 類使
濾鏡動起來,以獲得此效果。
可用的顯示濾鏡
ActionScript 3.0 包括 9 個可用于顯示對象和 BitmapData 對象的濾鏡類:
■ 斜角濾鏡(BevelFilter 類)
■ 模糊濾鏡(BlurFilter 類)
■ 投影濾鏡(DropShadowFilter 類)
■ 發(fā)光濾鏡(GlowFilter 類)
■ 漸變斜角濾鏡(GradientBevelFilter 類)
■ 漸變發(fā)光濾鏡(GradientGlowFilter 類)
■ 顏色矩陣濾鏡(ColorMatrixFilter 類)
■ 卷積濾鏡(ConvolutionFilter 類)
■ 置換圖濾鏡(DisplacementMapFilter 類)
斜角濾鏡
BevelFilter 類允許您對過濾的對象添加三維斜面邊緣。此濾鏡可使對象的硬角或邊緣具有硬
角或邊緣被鑿削或呈斜面的效果。
BevelFilter 類屬性允許您自定義斜角的外觀。您可以設(shè)置加亮和陰影顏色、斜角邊緣模糊、
斜角角度和斜角邊緣的位置,甚至可以創(chuàng)建挖空效果。
模糊濾鏡
BlurFilter 類可使顯示對象及其內(nèi)容具有涂抹或模糊的效果。模糊效果可以用于產(chǎn)生對象不
在焦點之內(nèi)的視覺效果,也可以用于模擬快速運動,比如運動模糊。通過將模糊濾鏡的
quality 屬性設(shè)置為低,可以模擬輕輕離開焦點的鏡頭效果。將 quality 屬性設(shè)置為高會
產(chǎn)生類似高斯模糊的平滑模糊效果。
投影濾鏡
投影給人一種目標(biāo)對象上方有獨立光源的印象。可以修改此光源的位置和強度,以產(chǎn)生各種
不同的投影效果。
投影濾鏡使用與模糊濾鏡的算法相似的算法。主要區(qū)別是投影濾鏡有更多的屬性,您可以修
改這些屬性來模擬不同的光源屬性(如 Alpha、顏色、偏移和亮度)。
投影濾鏡還允許您對投影的樣式應(yīng)用自定義變形選項,包括內(nèi)側(cè)或外側(cè)陰影和挖空(也稱為
剪切塊)模式。
發(fā)光濾鏡
GlowFilter 類對顯示對象應(yīng)用加亮效果,使顯示對象看起來像是被下方的燈光照亮,可創(chuàng)造
出一種柔和發(fā)光效果。
與投影濾鏡類似,發(fā)光濾鏡包括的屬性可修改光源的距離、角度和顏色,以產(chǎn)生各種不同效
果。GlowFilter 還有多個選項用于修改發(fā)光樣式,包括內(nèi)側(cè)或外側(cè)發(fā)光和挖空模式。
漸變斜角濾鏡
GradientBevelFilter 類允許您對顯示對象或 BitmapData 對象應(yīng)用增強的斜角效果。在斜
角上使用漸變顏色可以大大改善斜角的空間深度,使邊緣產(chǎn)生一種更逼真的三維外觀效果。
漸變發(fā)光濾鏡
GradientGlowFilter 類允許您對顯示對象或 BitmapData 對象應(yīng)用增強的發(fā)光效果。該效
果可使您更好地控制發(fā)光顏色,因而可產(chǎn)生一種更逼真的發(fā)光效果。另外,漸變發(fā)光濾鏡還
允許您對對象的內(nèi)側(cè)、外側(cè)或上側(cè)邊緣應(yīng)用漸變發(fā)光。
顏色矩陣濾鏡
ColorMatrixFilter 類用于操作過濾對象的顏色和 Alpha 值。它允許您進行飽和度更改、色
相旋轉(zhuǎn)(將調(diào)色板從一個顏色范圍移動到另一個顏色范圍)、將亮度更改為 Alpha,以及生
成其它顏色操作效果,方法是使用一個顏色通道中的值,并將這些值潛移默化地應(yīng)用于其它
通道。
從概念上來說,濾鏡將逐一處理源圖像中的像素,并將每個像素分為紅、綠、藍和 Alpha 組
件。然后,用每個值乘以顏色矩陣中提供的值,將結(jié)果加在一起以確定該像素將顯示在屏幕
上的最終顏色值。濾鏡的 matrix 屬性是一個由 20 個數(shù)字組成的數(shù)組,用于計算最終顏色。
有關(guān)用于計算顏色值的特定算法的詳細(xì)信息,請參閱《ActionScript 3.0 語言和組件參考》
中說明 ColorMatrixFilter 類的 matrix 屬性的條目。
卷積濾鏡
ConvolutionFilter 類可用于對 BitmapData 對象或顯示對象應(yīng)用廣泛的圖像變形,如模
糊、邊緣檢測、銳化、浮雕和斜角。
從概念上來說,卷積濾鏡會逐一處理源圖像中的每個像素,并使用像素和它周圍的像素的值
來確定該像素的最終顏色。指定為數(shù)值數(shù)組的矩陣可以指示每個特定鄰近像素的值對最終結(jié)
果值具有何種程度的影響。
置換圖濾鏡
DisplacementMapFilter 類使用 BitmapData 對象(稱為置換圖圖像)中的像素值在新對
象上執(zhí)行置換效果。通常,置換圖圖像與將要應(yīng)用濾鏡的實際顯示對象或 BitmapData 實例
不同。置換效果包括置換過濾的圖像中的像素,也就是說,將這些像素移開原始位置一定距
離。此濾鏡可用于產(chǎn)生移位、扭曲或斑點效果。
應(yīng)用于給定像素的置換位置和置換量由置換圖圖像的顏色值確定。使用濾鏡時,除了指定置
換圖圖像外,還要指定以下值,以便控制置換圖圖像中計算置換的方式:
■ 映射點:過濾圖像上的位置,在該點將應(yīng)用置換濾鏡的左上角。如果只想對圖像的一部
分應(yīng)用濾鏡,可以使用此值。
■ X 組件:影響像素的 x 位置的置換圖圖像的顏色通道。
■ Y 組件:影響像素的 y 位置的置換圖圖像的顏色通道。
■ X 縮放比例:指定 x 軸置換強度的乘數(shù)值。
■ Y 縮放比例:指定 y 軸置換強度的乘數(shù)值。
420 過濾顯示對象
■ 濾鏡模式:確定在移開像素后形成的空白區(qū)域中, Flash Player 應(yīng)執(zhí)行什么操作。在
DisplacementMapFilterMode 類中定義為常量的選項可以顯示原始像素(濾鏡模式
IGNORE)、從圖像的另一側(cè)環(huán)繞像素(濾鏡模式 WRAP,這是默認(rèn)設(shè)置)、使用最近的移
位像素(濾鏡模式 CLAMP)或用顏色填充空間(濾鏡模式 COLOR)。