ActionScript3游戏中的图像编程(连载六)

总目录:http://blog.csdn.net/iloveas2014/article/details/38304477

1.2 ColorTransform对RGB数值的操作及应用

        flash.geom.ColorTransform是Flash内置的一个色彩变换类。它支持色彩通道值的线性变换。
        所谓线性变换,是指一次函数模式的变换:dst = src * multiplier + offset。您可以将每个通道的值与常量进行四则运算。对于ColorTransform类而言,通道的原数值和变换后的数值存在以下关系:

red(dst) = red(src) * redMultiplier + redOffset。
green(dst) = green(src) * greenMultiplier + greenOffset
blue(dst) = blue(src) * blueMultiplier + blueOffset
alpha(dst) = alpha(src) * alphaMultiplier + alphaOffset


        其中,dst代表结果值,src代表初始值。

       这个运算看起来并不复杂,我们也能手工实现。但是,自己写的算式无法直接应用于显示对象或者BitmapData上,您必须一个个像素点的去修改颜色(当然,ColorMatrixFilter,自定义滤镜,颜色表等方法也可以实现),并且对于矢量图而言,还不得不先转成位图。而用ColorTransform的话则非常方便,只要对指定对象应用了它,每个像素点的颜色就会自动作出相应的变化,从而实现图形色调,亮度等属性的整体变换乃至反色效果,而且不会丢失矢量信息。

       此外,ColorTransform还支持通过color属性将对象的所有像素点变成同一种颜色。假设,myColorTransform.color = 0xFFFF00,则被应用了myColorTransform的对象就会呈现出单一黄色的状态,它等价于以下代码:

myColorTransform.redMultiplier = myColorTransform.greenMultiplier = myColorTransform.blueMultipler = 0;
myColorTransform.redOffset = 255;
myColorTransform.greenOffset = 255;
myColorTransform.blueOffset = 0;


       由于与src相乘的系数都设置成了0,所以,不管src是多少,dst的值都不会受到任何影响,red(dst)和green(dst)始终等于255,blue(dst)始终等于0,于是所有像素点的RGB色彩值都等于0xFFFF00(黄色),而alpha(不透明度)则不发生变化。

       ColorTransform最常用的地方有两处:

       1 DisplayObject.transform.colorTransform = myColorTransform;
       2 BitmapData.colorTransform(myColorTransform);

       这里我们只测试第一个,第二个在BitmapData的相关章节再作进一步的深入。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值