CC影子

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

在游戏开发中改变显示对象的颜色是比较常见的操作,那么除了在FlashCS中调整,AS3又提供了怎样的方式呢?

  • ColorTransform

 

   这个类是轻量级的应用,其构造参数如下:

   

ColorTransform(redMultiplier:Number = 1.0, greenMultiplier:Number = 1.0, blueMultiplier:Number = 1.0, alphaMultiplier:Number = 1.0, redOffset:Number = 0, greenOffset:Number = 0, blueOffset:Number = 0, alphaOffset:Number = 0)

  

  显示时采用如下公式计算每个颜色通道的新值:

    新红色值 = (旧红色值 * redMultiplier) + redOffset

新绿色值 = (旧绿色值 * greenMultiplier) + greenOffset

新蓝色值 = (旧蓝色值 * blueMultiplier) + blueOffset

新 Alpha 值 = (旧 Alpha 值 * alphaMultiplier) + alphaOffset

 

可以通过下列方式使用 ColorTransform 对象:

  1、在 BitmapData 类的 colorTransform() 方法的 colorTransform 参数中

  2、作为 Transform 对象(此对象可以用作显示对象的 transform 属性)的 colorTransform 属性

  • ColorMatrixFilter

    这个类采用更为复杂的公式来处理显示对象的每个像素,构造参数接受一个4X5的颜色矩阵

ColorMatrixFilter(matrix:Array = null)

    其颜色计算公式如下:

 redResult   = (a[0]  * srcR) + (a[1]  * srcG) + (a[2]  * srcB) + (a[3]  * srcA) + a[4]
greenResult = (a[5]  * srcR) + (a[6]  * srcG) + (a[7]  * srcB) + (a[8]  * srcA) + a[9]
blueResult  = (a[10] * srcR) + (a[11] * srcG) + (a[12] * srcB) + (a[13] * srcA) + a[14]
alphaResult = (a[15] * srcR) + (a[16] * srcG) + (a[17] * srcB) + (a[18] * srcA) + a[19]

    该类能实现对饱和度、色相、亮度、Alpha 等值的更改,你也可以将滤镜应用于任何显示对象。

  • ColorMatrix

    根据给定的值计算和存储颜色矩阵,通过提供的GetFlatArray():Array方法,可以获取颜色矩阵做为ColorMatrixFilter的构造参数。

    该类还提供了一些常见的颜色处理

    1.     SetBrightnessMatrix(value:Number):void 根据给定的值计算和存储亮度矩阵。 ColorMatrix
    2.     SetContrastMatrix(value:Number):void 根据给定的值计算和存储对比度矩阵。 ColorMatrix
    3.     SetHueMatrix(angle:Number):void 根据给定的值计算和存储色相矩阵。 ColorMatrix 
    4.     SetSaturationMatrix(value:Number):void 根据给定的值计算和存储饱和度矩阵。 
posted on 2014-04-11 08:45  CC影子  阅读(1146)  评论(0编辑  收藏  举报