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

