ColorTransform

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

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

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

 



通道示范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位于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对象。这种写法的优点在于代码简单直观,但是因为无名对象的属性和方法不能随意访问,在较复杂的场合,会增加代码的维护成本

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值