Flash/Flex学习笔记(21):利用colorTransform改变对象的颜色及透明度
2010-04-03 11:43
323 查看
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颜色分量以及透明度,说得通俗点:可以把红车换成绿车,或者把黑脸变白脸.下面是示例代码:
从该示例中也可以看出,如果要消除一张图片颜色中的红色分量,只要将redMultiplier设置为0即可,不过红色分量消除后,其值变为0,即原来红色的部分会变成黑色,如果想把纯红换成纯绿,还要再把greenOffSet设置为255
这是官方的解释:
当 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学习笔记(21):利用colorTransform改变对象的颜色及透明度
- 利用3个UISlider来改变一个对象的颜色
- 改变图片的透明度,图片自适应屏幕 5.0 获取颜色的方法,mathlerp移动
- Cocos2d-x开发---改变父节点颜色、透明度影响子节点
- 【Shader】利用mask图片中的不同颜色通道改变模型显示
- 利用QPalette改变控件颜色
- 切换导航标签实现当前标签颜色改变以及利用js如何准确获取当前页面url网址信息
- 滚动视图上滑动改变导航条颜色和透明度
- CCProtocols(各种协议CCRGBAProtocol:函数-透明度是否改变RGB、颜色是否下传。混合协议+CCTextureProtocol+字体协议+导演协议 )
- [ActionScript 3.0] 利用ColorTransform实现对象(图片)的曝光过渡效果
- Qt之对话框设计——利用QPalette改变控件颜色
- 利用反射来改变String对象
- Java 按钮和单击事件映射到动作对象改变面板颜色小程序实例 Java核心技术 事件处理
- Qt之对话框设计——利用QPalette改变控件颜色
- Qt之对话框设计——利用QPalette改变控件颜色
- 利用线程休眠和Graphics 对象在窗体中画线段,颜色随机产生
- 利用Android的传感器改变背景颜色
- Android 使用颜色矩阵改变图片颜色,透明度,亮度
- iOS 动态改变UINavigationController的颜色和透明度
- Qt之对话框设计——利用QPalette改变控件颜色