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

简介: transform是flash.Display.DisplayObject的属性之一,而colorTransform又是transform的属性,这也就意味着几乎所有对象都可以使用colorTransform属性   这是官方的解释: 当 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

目录
相关文章
|
内存技术
Flash/Flex学习笔记(30):不用startDrag和stopDrag的对象拖动
对于从Sprite类继承来的对象,要实现拖放当然是Flash/Flex学习笔记(13):对象拖动(startDrag/stopDrag) 里讲的方法最方便,但是对于不是从Sprite类继承得来的对象,这startDrag/stopDrag是不能用的,这时候只能采用最通常用做法:利用Mouse_Dow...
760 0
|
内存技术
Flash/Flex学习笔记(31):对象拖拽与投掷
对象拖拽: 这其实就是以前所学知识:Flash/Flex学习笔记(13):对象拖动(startDrag/stopDrag) + Flash/Flex学习笔记(23):运动学原理 的综合运用,要提一下的是下面代码中对于EnterFrame的添加与移除操作 package { import flash.
870 0
|
内存技术
Flash/Flex学习笔记(35):如何正确监听Stage对象的事件
如果想在一个自定义类中注册对stage对象的监听事件,然后在另一个文档类中使用该类的实例(或在fla的时间轴上使用该类的实例),你会很郁闷的发现:在构造函数中始终无法引用到this.stage(用trace(this.
601 0
|
内存技术
Flash/Flex学习笔记(13):对象拖动(startDrag/stopDrag)
Flash中只有影片MovieClip(准确的讲是Sprite)可以调用startDrag,endDrag,创建对象拖动最简单的办法只要调用这二个方法即可 myobj.addEventListener(MouseEvent.
874 0
|
内存技术
Flash/Flex学习笔记(15):FMS 3.5之远程共享对象(Remote Shared Object)
FMS中的“远程共享对象”可以让多个Client端的flash应用共享同一个全局对象,并且当客户端中的任何一个改变该对象时,系统会自动将该对象回发到FMS服务器,同时FMS服务器也会将该对象重新广播到所有客户端。
951 0
|
2月前
|
开发者 容器
flex 布局属性在实际项目中的应用场景有哪些?
flex 布局属性在实际项目中的应用场景有哪些?
|
28天前
|
前端开发 UED 容器
使用 Flex 布局实现垂直居中效果
【10月更文挑战第7天】
99 57
|
13天前
|
前端开发 UED 容器
在 CSS 中使用 Flex 布局实现页面自适应时需要注意什么?
【10月更文挑战第22天】在使用 Flex 布局实现页面自适应时,需要对其基本原理和特性有深入的理解,同时结合具体的布局需求和场景,进行细致的调整和优化。通过合理的设置和注意事项的把握,才能实现理想的自适应效果,提升用户体验。还可以根据实际情况进行更深入的探索和实践,以不断提升 Flex 布局的应用能力。
|
2天前
|
开发者 UED 容器
鸿蒙next版开发:ArkTS组件通用属性(Flex布局)
在HarmonyOS next中,ArkTS的Flex布局是一种强大且灵活的布局方式,支持水平或垂直方向排列元素,并能动态调整大小和位置以适应不同屏幕。主要属性包括justifyContent、alignItems、direction和wrap,适用于导航栏、侧边栏和表单等多种场景。示例代码展示了如何使用这些属性创建美观的布局。
21 10
|
13天前
|
容器
在 Flex 布局中,如何设置元素在侧轴上的初始对齐方式?
【10月更文挑战第22天】同时,还可以进一步探索其他 Flex 布局相关的属性和技巧,以更好地掌握 Flex 布局的强大功能,创造出更具创意和适应性的页面布局。
22 2