前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Flash/Flex学习笔记(21):利用colorTransform改变对象的颜色及透明度

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

作者头像
菩提树下的杨过
发布2018-01-23 15:29:33
9840
发布2018-01-23 15:29:33
举报

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

代码语言:javascript
复制
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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2010-04-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档