flex4sdk中可以使用flash.filters.ColorMatrixFilter和spark.filters.ColorMatrixFilter,两者实现或许有区别,但基本用法区别不大。
先看一下api中的说明:
引用
使用 ColorMatrixFilter 类可以将 4 x 5 矩阵转换应用于输入图像上的每个像素的 RGBA 颜色和 Alpha 值,以生成具有一组新的 RGBA 颜色和 Alpha 值的结果。该类允许饱和度更改、色相旋转、亮度为 Alpha 以及各种其他效果。您可以将滤镜应用于任何显示对象(即,从 DisplayObject 类继承的对象)
对于颜色矩阵matrix:
引用
滤镜将每个源像素分离成它的红色、绿色、蓝色和 Alpha 成分,分别以 srcR、srcG、srcB 和 srcA 表示。要计算四个通道中每个通道的结果,可将图像中每个像素的值乘以转换矩阵中的值。(可选)可以将偏移量(介于 -255 至 255 之间)添加到每个结果(矩阵的每行中的第五项)中。滤镜将各颜色成分重新组合为单一像素,并写出结果。在下列公式中,a[0] 到 a[19] 对应于由 20 个项目组成的数组中的条目 0 至 19,该数组已传递到 matrix 属性:
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]
需要注意的是:matrix这个属性不能直接修改其数据。
错误的写法:
filter.matrix[0] = 1
正确的写法:
m = filter.matrix;
m[0] = 1;
filter.matrix = m;
附件里是个小例子
分享到:
相关推荐
AS3 调节ColorMatrixFilter参数的应用
压缩包内是一个.exe文件,导入图片后,通过修改ColorMatrixFilter的Matrix属性的参数可以直观看到图片添加滤镜后的变化。方便大家找到合适的参数。
ColorMatrixFilter图片变灰色效果
PixiJS过滤器演示版单击以交互方式使用过滤器,以查看其工作原理。筛选器所有过滤器均适用于PixiJS v5。 筛选预习调整滤镜@ pixi / filter-adjustment AdvancedBloomFilter @ pixi / filter-advanced-bloom ...
TweenFilterLite 扩充了 TweenLite 并且加入了滤镜缓动,包含了 ColorMatrixFilter 的一些效果 ,比如饱和、对比、增亮、色调,甚至是着色,但文件的尺寸始终没有超过3K。与 TweenLite 的做法相似,提供有AS2版和AS...
19.8色彩矩阵滤镜ColorMatrixFilter 406 19.9矩阵盘绕滤镜ConvolutionFilter 408 19.10置换滤镜DisplacementMapFilter 410 19.11滤镜切换的相册示例 412 19.12小结 415 第6篇ActionScript3.0多媒体编程 第20章音频...