ColorTransform

系统 1943 0

ColorTransform类调整显示对象的颜色值
ColorTransform
首先,我们要知道,一个颜色由四个通道组成:红、绿、蓝和alpha通道(这个alpha通道在PS里我不知道对应哪个),他们的十六进制颜色值分别为:

红:0xffff0000       绿:0xff00ff00       蓝:0xff0000ff (第一个0xff表示透明度100%)

在一张RGB模式的图片里,一个像素的颜色值是这个三个通道的减色模式叠加而成,比如上面这三个纯色叠加起来是白色,具体可以参考下面的附件...

ColorTransform

 



通道示范swf:

≯全屏显示或下载≮



然后我们再看一下官方的解释,就比较好理解了...

可使用ColorTransform 类调整显示对象的颜色值。可以将颜色调整或颜色转换应用于所有四种通道:红色、绿色、蓝色和 Alpha 透明度。 当ColorTransform 对象应用于显示对象时,将按如下方法为每个颜色通道计算新值:


新红色值 = (旧红色值 * redMultiplier) + redOffset 
新绿色值 = (旧绿色值 * greenMultiplier) + greenOffset 
新蓝色值 = (旧蓝色值 * blueMultiplier) + blueOffset 
新 Alpha 值 = (旧 Alpha 值 * alphaMultiplier) + alphaOffset 
如果计算后任何一个颜色通道值大于255,则该值将被设置为255。如果该值小于0,它将被设置为0。
ColorTransform () 构造函数 
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 值为显示对象创建 ColorTransform 对象。 
参数
  redMultiplier:Number (default = 1.0) — 红色乘数的值,在 0 到 1 范围内。   
greenMultiplier:Number (default = 1.0) — 绿色乘数的值,在 0 到 1 范围内。   
blueMultiplier:Number (default = 1.0) — 蓝色乘数的值,在 0 到 1 范围内。   
alphaMultiplier:Number (default = 1.0) — Alpha 透明度乘数的值,在 0 到 1 范围内。   
redOffset:Number (default = 0) — 红色通道值的偏移量,在 -255 到 255 范围内。   
greenOffset:Number (default = 0) — 绿色通道值的偏移量,在 -255 到 255 范围内。    
blueOffset:Number (default = 0) — 蓝色通道值的偏移量,在 -255 到 255 范围内。    
alphaOffset:Number (default = 0) — Alpha 透明度通道值的偏移量,在 -255 到 255 范围内。 

下面是一个Demo调调看就知道怎么用了:

ColorTransform

 

 

 

 

今天在做一个地图应用时,要动态变化影片剪辑中的填充颜色,找来找去,发现在ColorTransform。
  ColorTransform位于flash.geom中,使用 ColorTransform 类调整显示对象的颜色值。

  总结一下:
  ColorTransform类的构造函数:
  ColorTransform(redmulti,greenmulti,bluemulti,alphamulti,redoffset,greenoffset,blueoffset,alphaoffset);
  构造函数“ColorTransform()”中的所有参数都是Number类型,但实际上redmulti、greenmulti、bluemulti和alphamulti是0到1的小数。Redoffset、greenoffset、blueoffset、alphaoffset是从-255到255的整数。注意这里alphaoffset的取值范围是0到255,而AS3中DisplayObject.alpha属性的取值是0到1,两者不要混淆。
当将ColorTransform对象附加至显示对象时,RGB和Alpha四个通道都会分别进行计算和变换。最终颜色的计算方法为:
  新红色值 = (旧红色值 * redMultiplier) + redOffset
  新绿色值 = (旧绿色值 * greenMultiplier) + greenOffset
  新蓝色值 = (旧蓝色值 * blueMultiplier) + blueOffset
  新 Alpha 值 = (旧 Alpha 值 * alphaMultiplier) + alphaOffset 

  如果计算后任何一个颜色通道值大于 255,则该值将被设置为 255。 如果该值小于 0,它将被设置为 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);//前四个参数为multi,后四个参数为offset,顺序RGBA

其中:
(1)使用直接设置alpha值的办法,使其半透明。
(2)采用强大的colorTransform对象,按照标准步骤对其进行操作。因为不能直接操作其内部colorTransform对象,代码先创建了一个自定义colorTransform对象color_trans,依次设置color_trans的各属性,并替换color_rect2的内部ColorTransform对象,改变color_rect2的颜色。
(3)直接使用colorTransform构造函数创建了一个无名colorTransform对象,并替换color_rect3的内部colorTransform对象。这种写法的优点在于代码简单直观,但是因为无名对象的属性和方法不能随意访问,在较复杂的场合,会增加代码的维护成本

 

ColorTransform


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论