ColorTransform類調(diào)整顯示對象的顏色值
ColorTransform
首先,我們要知道,一個顏色由四個通道組成:紅、綠、藍(lán)和alpha通道(這個alpha通道在PS里我不知道對應(yīng)哪個),他們的十六進(jìn)制顏色值分別為:
紅:0xffff0000? ?? ? 綠:0xff00ff00? ?? ? 藍(lán):0xff0000ff (第一個0xff表示透明度100%)
在一張RGB模式的圖片里,一個像素的顏色值是這個三個通道的減色模式疊加而成,比如上面這三個純色疊加起來是白色,具體可以參考下面的附件...
?
通道示范swf:
然后我們再看一下官方的解釋,就比較好理解了...
可使用ColorTransform 類調(diào)整顯示對象的顏色值??梢詫㈩伾{(diào)整或顏色轉(zhuǎn)換應(yīng)用于所有四種通道:紅色、綠色、藍(lán)色和 Alpha 透明度。 當(dāng)ColorTransform 對象應(yīng)用于顯示對象時,將按如下方法為每個顏色通道計算新值:
新紅色值 = (舊紅色值 * redMultiplier) + redOffset?
新綠色值 = (舊綠色值 * greenMultiplier) + greenOffset?
新藍(lán)色值 = (舊藍(lán)色值 * blueMultiplier) + blueOffset?
新 Alpha 值 = (舊 Alpha 值 * alphaMultiplier) + alphaOffset?
如果計算后任何一個顏色通道值大于255,則該值將被設(shè)置為255。如果該值小于0,它將被設(shè)置為0。
ColorTransform () 構(gòu)造函數(shù)?
public function ColorTransform(
? ? redMultiplier:Number = 1.0,?
? ? greenMultiplier:Number = 1.0,?
? ? blueMultiplier:Number = 1.0,?
? ? alphaMultiplier:Number = 1.0,?
? ? redOffset:Number = 0,?
? ? greenOffset:Number = 0,?
? ? blueOffset:Number = 0,?
? ? alphaOffset:Number = 0)?
用指定的顏色通道值和 Alpha 值為顯示對象創(chuàng)建 ColorTransform 對象。?
參數(shù)
??redMultiplier:Number (default = 1.0) — 紅色乘數(shù)的值,在 0 到 1 范圍內(nèi)。? ?
greenMultiplier:Number (default = 1.0) — 綠色乘數(shù)的值,在 0 到 1 范圍內(nèi)。? ?
blueMultiplier:Number (default = 1.0) — 藍(lán)色乘數(shù)的值,在 0 到 1 范圍內(nèi)。? ?
alphaMultiplier:Number (default = 1.0) — Alpha 透明度乘數(shù)的值,在 0 到 1 范圍內(nèi)。? ?
redOffset:Number (default = 0) — 紅色通道值的偏移量,在 -255 到 255 范圍內(nèi)。? ?
greenOffset:Number (default = 0) — 綠色通道值的偏移量,在 -255 到 255 范圍內(nèi)。? ??
blueOffset:Number (default = 0) — 藍(lán)色通道值的偏移量,在 -255 到 255 范圍內(nèi)。? ??
alphaOffset:Number (default = 0) — Alpha 透明度通道值的偏移量,在 -255 到 255 范圍內(nèi)。?
下面是一個Demo調(diào)調(diào)看就知道怎么用了:
?
?
?
?
今天在做一個地圖應(yīng)用時,要動態(tài)變化影片剪輯中的填充顏色,找來找去,發(fā)現(xiàn)在ColorTransform。
ColorTransform位于flash.geom中,使用 ColorTransform 類調(diào)整顯示對象的顏色值。
總結(jié)一下:
ColorTransform類的構(gòu)造函數(shù):
ColorTransform(redmulti,greenmulti,bluemulti,alphamulti,redoffset,greenoffset,blueoffset,alphaoffset);
構(gòu)造函數(shù)“ColorTransform()”中的所有參數(shù)都是Number類型,但實際上redmulti、greenmulti、bluemulti和alphamulti是0到1的小數(shù)。Redoffset、greenoffset、blueoffset、alphaoffset是從-255到255的整數(shù)。注意這里alphaoffset的取值范圍是0到255,而AS3中DisplayObject.alpha屬性的取值是0到1,兩者不要混淆。
當(dāng)將ColorTransform對象附加至顯示對象時,RGB和Alpha四個通道都會分別進(jìn)行計算和變換。最終顏色的計算方法為:
新紅色值 = (舊紅色值 * redMultiplier) + redOffset
新綠色值 = (舊綠色值 * greenMultiplier) + greenOffset
新藍(lán)色值 = (舊藍(lán)色值 * blueMultiplier) + blueOffset
新 Alpha 值 = (舊 Alpha 值 * alphaMultiplier) + alphaOffset?
如果計算后任何一個顏色通道值大于 255,則該值將被設(shè)置為 255。 如果該值小于 0,它將被設(shè)置為 0。
有三種方式改變顏色值:
1
mc.alpha=.5;
2.
?
var color_trans:ColorTransform=new ColorTransform(); color_trans.redMultiplier=0; color_trans.greenMultiplier=0; color_trans.blueMultiplier=0; color_trans.alphaMultiplier=0; color_trans.redOffset=0; color_trans.greenOffset=0; color_trans.blueOffset=255; color_trans.alphaOffset=255; mc.transform.colorTransform=color_trans;?
?
3.
mc.transform.colorTransform=new ColorTransform(1,1,1,1,0,0,0,0);//前四個參數(shù)為multi,后四個參數(shù)為offset,順序RGBA
其中:
(1)使用直接設(shè)置alpha值的辦法,使其半透明。
(2)采用強大的colorTransform對象,按照標(biāo)準(zhǔn)步驟對其進(jìn)行操作。因為不能直接操作其內(nèi)部colorTransform對象,代碼先創(chuàng)建了一個自定義colorTransform對象color_trans,依次設(shè)置color_trans的各屬性,并替換color_rect2的內(nèi)部ColorTransform對象,改變color_rect2的顏色。
(3)直接使用colorTransform構(gòu)造函數(shù)創(chuàng)建了一個無名colorTransform對象,并替換color_rect3的內(nèi)部colorTransform對象。這種寫法的優(yōu)點在于代碼簡單直觀,但是因為無名對象的屬性和方法不能隨意訪問,在較復(fù)雜的場合,會增加代碼的維護(hù)成本
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
