`
madfroghe
  • 浏览: 119526 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Flash/Flex学习笔记(18):利用colorTransform改变对象的颜色及透明度

阅读更多

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颜色分量以及透明度,说得通俗点:可以把红车换成绿车,或者把黑脸变白脸.下面是示例代码:

txtRedMultiplier.addEventListener(Event.CHANGE,ChangeHandler);

 
txtGreenMultiplier.addEventListener(Event.CHANGE,ChangeHandler);

 
txtBlueMultiplier.addEventListener(Event.CHANGE,ChangeHandler);

 
txtAlphaMultiplier.addEventListener(Event.CHANGE,ChangeHandler);


txtRedOffset.addEventListener(Event.CHANGE,ChangeHandler);

 
txtGreenOffset.addEventListener(Event.CHANGE,ChangeHandler);

 
txtBlueMultiplier.addEventListener(Event.CHANGE,ChangeHandler);

 
txtAlphaMultiplier.addEventListener(Event.CHANGE,ChangeHandler);

 
function ChangeHandler(e:Event) {

 
var redMultiplier:Number=txtRedMultiplier.value;

 
var greenMultiplier:Number=txtGreenMultiplier.value;

 
var blueMultiplier:Number=txtBlueMultiplier.value;


var alphaMultiplier:Number=txtAlphaMultiplier.value;

 
var redOffSet:Number=txtRedOffset.value;

 
var greenOffSet:Number=txtGreenOffset.value;


var blueOffSet:Number=txtBlueOffset.value;

 
var alphaOffSet:Number=txtAlphaOffset.value;


//trace("redMultiplier=" + redMultiplier);


//trace("greenMultiplier=" + greenMultiplier);

 
//trace("blueMultiplier=" + blueMultiplier);

 
//trace("alphaMultiplier=" + alphaMultiplier);

 
var color:ColorTransform = new ColorTransform(redMultiplier,

 
greenMultiplier,

 
blueMultiplier,


alphaMultiplier,


redOffSet,


greenOffSet,


blueOffSet,

 
alphaOffSet);

 
R.transform.colorTransform = 


G.transform.colorTransform = 

 
B.transform.colorTransform = 


RGB.transform.colorTransform = 


img.transform.colorTransform = color;


}


ChangeHandler(null);

 
stop();

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics