ColorTransform類調(diào)整顯示對(duì)象的顏色值
ColorTransform
首先,我們要知道,一個(gè)顏色由四個(gè)通道組成:紅、綠、藍(lán)和alpha通道(這個(gè)alpha通道在PS里我不知道對(duì)應(yīng)哪個(gè)),他們的十六進(jìn)制顏色值分別為:
紅:0xffff0000? ?? ? 綠:0xff00ff00? ?? ? 藍(lán):0xff0000ff (第一個(gè)0xff表示透明度100%)
在一張RGB模式的圖片里,一個(gè)像素的顏色值是這個(gè)三個(gè)通道的減色模式疊加而成,比如上面這三個(gè)純色疊加起來(lái)是白色,具體可以參考下面的附件...
?
通道示范swf:
然后我們?cè)倏匆幌鹿俜降慕忉專捅容^好理解了...
可使用ColorTransform 類調(diào)整顯示對(duì)象的顏色值。可以將顏色調(diào)整或顏色轉(zhuǎn)換應(yīng)用于所有四種通道:紅色、綠色、藍(lán)色和 Alpha 透明度。 當(dāng)ColorTransform 對(duì)象應(yīng)用于顯示對(duì)象時(shí),將按如下方法為每個(gè)顏色通道計(jì)算新值:
新紅色值 = (舊紅色值 * redMultiplier) + redOffset?
新綠色值 = (舊綠色值 * greenMultiplier) + greenOffset?
新藍(lán)色值 = (舊藍(lán)色值 * blueMultiplier) + blueOffset?
新 Alpha 值 = (舊 Alpha 值 * alphaMultiplier) + alphaOffset?
如果計(jì)算后任何一個(gè)顏色通道值大于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 值為顯示對(duì)象創(chuàng)建 ColorTransform 對(duì)象。?
參數(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)。?
下面是一個(gè)Demo調(diào)調(diào)看就知道怎么用了:
?
?
?
?
今天在做一個(gè)地圖應(yīng)用時(shí),要?jiǎng)討B(tài)變化影片剪輯中的填充顏色,找來(lái)找去,發(fā)現(xiàn)在ColorTransform。
ColorTransform位于flash.geom中,使用 ColorTransform 類調(diào)整顯示對(duì)象的顏色值。
總結(jié)一下:
ColorTransform類的構(gòu)造函數(shù):
ColorTransform(redmulti,greenmulti,bluemulti,alphamulti,redoffset,greenoffset,blueoffset,alphaoffset);
構(gòu)造函數(shù)“ColorTransform()”中的所有參數(shù)都是Number類型,但實(shí)際上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對(duì)象附加至顯示對(duì)象時(shí),RGB和Alpha四個(gè)通道都會(huì)分別進(jìn)行計(jì)算和變換。最終顏色的計(jì)算方法為:
新紅色值 = (舊紅色值 * redMultiplier) + redOffset
新綠色值 = (舊綠色值 * greenMultiplier) + greenOffset
新藍(lán)色值 = (舊藍(lán)色值 * blueMultiplier) + blueOffset
新 Alpha 值 = (舊 Alpha 值 * alphaMultiplier) + alphaOffset?
如果計(jì)算后任何一個(gè)顏色通道值大于 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);//前四個(gè)參數(shù)為multi,后四個(gè)參數(shù)為offset,順序RGBA
其中:
(1)使用直接設(shè)置alpha值的辦法,使其半透明。
(2)采用強(qiáng)大的colorTransform對(duì)象,按照標(biāo)準(zhǔn)步驟對(duì)其進(jìn)行操作。因?yàn)椴荒苤苯硬僮髌鋬?nèi)部colorTransform對(duì)象,代碼先創(chuàng)建了一個(gè)自定義colorTransform對(duì)象color_trans,依次設(shè)置color_trans的各屬性,并替換color_rect2的內(nèi)部ColorTransform對(duì)象,改變color_rect2的顏色。
(3)直接使用colorTransform構(gòu)造函數(shù)創(chuàng)建了一個(gè)無(wú)名colorTransform對(duì)象,并替換color_rect3的內(nèi)部colorTransform對(duì)象。這種寫法的優(yōu)點(diǎn)在于代碼簡(jiǎn)單直觀,但是因?yàn)闊o(wú)名對(duì)象的屬性和方法不能隨意訪問(wèn),在較復(fù)雜的場(chǎng)合,會(huì)增加代碼的維護(hù)成本
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

