设为首页 加入收藏

TOP

ActionScript3游戏中的图像编程(连载八十五)
2015-07-20 17:41:13 来源: 作者: 【 】 浏览:3
Tags:ActionScript3 游戏 图像 编程 连载 八十五

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

4.4.5 AdjustColor合并4个矩阵

单个属性的算法我们就先探讨到这了,下面我们重点看一下矩阵的合并部分。

首先可以看到有5个矩阵类型的变量:

private var m_brightnessMatrix:ColorMatrix;
private var m_contrastMatrix:ColorMatrix;
private var m_saturationMatrix:ColorMatrix;
private var m_hueMatrix:ColorMatrix;
private var m_finalMatrix:ColorMatrix;


前4个分别对应AdjustColor的4个属性,而m_finalMatrix自然就是以上4个矩阵合并的结果了,我们看一下实际应用中比较常用的那个方法:CalculateFinalFlatArray。

if(CalculateFinalMatrix()){
 return m_finalMatrix.GetFlatArray();
}
return null;


首先,该方法会执行CalculateFinalMatrix函数计算最终矩阵,然后调用ColorMatrix的GetFlatArray函数得到一个长度为20的矩阵供ColorMatrixFilter使用。所以,接下来的关键就在于CalculateFinalMatrix方法。从源码可知,它就是用矩阵乘法把4个矩阵合并到m_finalMatrix中,执行顺序为亮度,对比度,饱和度和色相,与Flash IDE中的排列顺序完全一致。

关于AdjustColor类,最后我想提的一点是,在CalculateFinalMatrix计算前,函数先执行了一个if,判断4个矩阵是否非空。因此我们在使用AdjustColor时,必须对4个属性都至少设置一次才能让矩阵正常输出。

实际上Adobe完全没有必要这么做,因为Adobe已经在DynamicMatrix的操作里对空矩阵进行了判断,所以AdjustColor在计算前多判断一次实在有点多此一举了。再者,不在AdjustColor里做空矩阵判断还简化了AdjustColor使用者的调用流程,Adobe加来又何苦呢?

此外,我们还可以给AdjustColor的构造函数定义brightness,contrast,saturation和hue这4个参数,以减少外部调用的代码量:

public function AdjustColor(brightness:Number = 0, contrast:Numer = 0, saturation:Number = 0, hue:Number = 0){
this.brightness = brightness;
this.contrast = contrast;
this.saturation = saturation;
this.hue = hue;
}

AdjustColor类还有很多可以完善的地方,此处就不再一一列举了。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇hdu 5015 233 Matrix 下一篇HDU 5009 Paint Pearls(西安网络..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·有没有适合新手练习 (2025-12-26 01:48:47)
·用清华镜像网怎么下 (2025-12-26 01:48:44)
·请比较Python和R语言 (2025-12-26 01:48:42)
·JAVA现在的就业环境 (2025-12-26 01:19:24)
·最好的java反编译工 (2025-12-26 01:19:21)