惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

宝玉的分享
宝玉的分享
B
Blog RSS Feed
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
MyScale Blog
MyScale Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
S
SegmentFault 最新的问题
Y
Y Combinator Blog
月光博客
月光博客
IT之家
IT之家
T
Tailwind CSS Blog
Last Week in AI
Last Week in AI
L
LangChain Blog
博客园_首页
MongoDB | Blog
MongoDB | Blog
P
Proofpoint News Feed
博客园 - Franky
WordPress大学
WordPress大学
云风的 BLOG
云风的 BLOG
M
MIT News - Artificial intelligence
V
Visual Studio Blog
小众软件
小众软件
博客园 - 叶小钗
博客园 - 三生石上(FineUI控件)
N
Netflix TechBlog - Medium

博客园 - CC影子

Latency Compensating Methods in Client/Server In-game Protocol Design and Optimization【转】 Source Multiplayer Networking【转】 点在平面上的投影【转】 求反射向量【转】 射线和三角形的相交检测(ray triangle intersection test)【转】 3D空间中射线与轴向包围盒AABB的交叉检测算法【转】 3D空间中射线与三角形的交叉检测算法【转】 射线与平面的相交检测(Ray-Plane intersection test)【转】 HLSL-高级着色语言简介【转】 点到平面的距离公式【转】 直线和平面的交点【转】 Cocos2d-三维拾取Ray-AABB碰撞检测算法【转】 向量投影【转】 空间点到直线的距离【转】 判断点是否在三角形内【转】 透视投影详解【转】 几何变换详解【转】 Flash矢量图与位图性能对比 Stage3D显示透明贴图
Flash(as3) 调整显示对象颜色
CC影子 · 2014-04-11 · via 博客园 - 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 根据给定的值计算和存储饱和度矩阵。