[AS3]as3.0下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 (作者:菩提树下杨过)
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例