·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[AS3]as3.0下colorTransform处理对象颜色和透明度的用法示例

时间:2012-10-12 08:53cnblogs.com
as3.0下colorTransform处理,用这个东西可以改变几乎任何对象的R,G,B颜色分量以及透明度,说得通俗点:可以把红车换成绿车,或者把黑脸变白脸.下面是示例代码

  transform是flash.Display.DisplayObject的属性之一,而colorTransform又是transform的属性,这也就意味着几乎所有对象都可以使用colorTransform属性

  这是官方的解释:

  当 ColorTransform 对象应用于显示对象时,将按如下方法为每个颜色通道计算新值:

  新红色值 = (旧红色值 * redMultiplier) + redOffset
  新绿色值 = (旧绿色值 * greenMultiplier) + greenOffset
  新蓝色值 = (旧蓝色值 * blueMultiplier) + blueOffset
  新 Alpha 值 = (旧 Alpha 值 * alphaMultiplier) + alphaOffset (注:本人测试下来,好象这一行公式没啥作用)
  如果计算后任何一个颜色通道值大于 255,则该值将被设置为 255。 如果该值小于 0,它将被设置为 0。

  用这个东西可以改变几乎任何对象的R,G,B颜色分量以及透明度,说得通俗点:可以把红车换成绿车,或者把黑脸变白脸.下面是示例代码: 

  1. txtRedMultiplier.addEventListener(Event.CHANGE,ChangeHandler);   
  2. txtGreenMultiplier.addEventListener(Event.CHANGE,ChangeHandler);   
  3. txtBlueMultiplier.addEventListener(Event.CHANGE,ChangeHandler);   
  4. txtAlphaMultiplier.addEventListener(Event.CHANGE,ChangeHandler);   
  5.     
  6. txtRedOffset.addEventListener(Event.CHANGE,ChangeHandler);   
  7. txtGreenOffset.addEventListener(Event.CHANGE,ChangeHandler);   
  8. txtBlueMultiplier.addEventListener(Event.CHANGE,ChangeHandler);   
  9. txtAlphaMultiplier.addEventListener(Event.CHANGE,ChangeHandler);   
  10.     
  11. function ChangeHandler(e:Event) {   
  12.     var redMultiplier:Number=txtRedMultiplier.value;   
  13.     var greenMultiplier:Number=txtGreenMultiplier.value;   
  14.     var blueMultiplier:Number=txtBlueMultiplier.value;   
  15.     var alphaMultiplier:Number=txtAlphaMultiplier.value;   
  16.     
  17.     var redOffSet:Number=txtRedOffset.value;   
  18.     var greenOffSet:Number=txtGreenOffset.value;   
  19.     var blueOffSet:Number=txtBlueOffset.value;   
  20.     var alphaOffSet:Number=txtAlphaOffset.value;   
  21.     
  22.     //trace("redMultiplier=" + redMultiplier);   
  23.     //trace("greenMultiplier=" + greenMultiplier);   
  24.     //trace("blueMultiplier=" + blueMultiplier);   
  25.     //trace("alphaMultiplier=" + alphaMultiplier);   
  26.     
  27.     var color:ColorTransform = new ColorTransform(redMultiplier,   
  28.        greenMultiplier,   
  29.        blueMultiplier,   
  30.        alphaMultiplier,   
  31.        redOffSet,   
  32.        greenOffSet,   
  33.        blueOffSet,   
  34.        alphaOffSet);   
  35.         
  36.     R.transform.colorTransform =    
  37.     G.transform.colorTransform =    
  38.     B.transform.colorTransform =    
  39.     RGB.transform.colorTransform =    
  40.     img.transform.colorTransform = color;   
  41. }   
  42. ChangeHandler(null);   
  43. stop();  

从该示例中也可以看出,如果要消除一张图片颜色中的红色分量,只要将redMultiplier设置为0即可,不过红色分量消除后,其值变为0,即原来红色的部分会变成黑色,如果想把纯红换成纯绿,还要再把greenOffSet设置为255 (作者:菩提树下杨过)

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器