在游戏开发中改变显示对象的颜色是比较常见的操作,那么除了在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的构造参数。
该类还提供了一些常见的颜色处理
- SetBrightnessMatrix(value:Number):void 根据给定的值计算和存储亮度矩阵。 ColorMatrix
- SetContrastMatrix(value:Number):void 根据给定的值计算和存储对比度矩阵。 ColorMatrix
- SetHueMatrix(angle:Number):void 根据给定的值计算和存储色相矩阵。 ColorMatrix
- SetSaturationMatrix(value:Number):void 根据给定的值计算和存储饱和度矩阵。