LColorMatrixFilter Class
使用 LColorMatrixFilter 类可以将 4 x 5 矩阵转换应用于输入图像上的每个像素的 RGBA 颜色和 Alpha 值,以生成具有一组新的 RGBA 颜色和 Alpha 值的结果。该类允许饱和度更改、色相旋转、亮度为 Alpha 以及各种其他效果。您可以将滤镜应用于任何显示对象(即,从 LDisplayObject 类继承的对象),以及 LBitmapData 对象。
注意:对于 RGBA 值,最高有效字节代表红色通道值,其后的有效字节分别代表绿色、蓝色和 Alpha 通道值。
要创建新的颜色矩阵滤镜,请使用 new LColorMatrixFilter() 语法。滤镜的具体使用取决于要应用滤镜的对象:
・要对影片剪辑、文本字段、按钮应用滤镜,请使用 filters 属性(继承自 LDisplayObject)。设置对象的 filters 属性不会修改相应的对象,而清除 filters 属性可以删除相应的滤镜。
・要对 LBitmapData 对象应用滤镜,请使用 LBitmapData.applyFilter() 方法。对 LBitmapData 对象调用 applyFilter() 会取得源 LBitmapData 对象和滤镜对象,并最终生成一个过滤图像。
如果对显示对象应用滤镜,则会自动调用该对象的 cacheAsBitmap(true) 。
Constructor
LColorMatrixFilter
-
matrix
Parameters:
-
matrix
Array由 20 个项目(排列成 4 x 5 矩阵)组成的数组。
由 20 个项目组成的数组,适用于 4 x 5 颜色转换。matrix 属性不能通过直接修改它的值来更改(例如 myFilter.matrix[2] = 1;)。相反,必须先获取对数组的引用,对引用进行更改,然后重置该值。
颜色矩阵滤镜将每个源像素分离成它的红色、绿色、蓝色和 Alpha 成分,分别以 srcR、srcG、srcB 和 srcA 表示。要计算四个通道中每个通道的结果,可将图像中每个像素的值乘以转换矩阵中的值。(可选)可以将偏移量(介于 -255 至 255 之间)添加到每个结果(矩阵的每行中的第五项)中。滤镜将各颜色成分重新组合为单一像素,并写出结果。
在下列公式中,a[0] 到 a[19] 对应于由 20 个项目组成的数组中的条目 0 至 19,该数组已传递到 matrix 属性:
如果对显示对象应用滤镜,则会自动调用该对象的 cacheAsBitmap(true) 。
・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]
对于数组中的每个颜色值,值 1 等于正发送到输出的通道的 100%,同时保留颜色通道的值。
Example:
LInit(1000/60, "legend", 800, 480, main);
function main () {
loader = new LLoader();
loader.addEventListener(LEvent.COMPLETE, loadBitmapdata);
loader.load("face.jpg", "bitmapData");
}
function loadBitmapdata (event) {
var layer = new LSprite();
layer.x = layer.y = 100;
addChild(layer);
var bitmapdata = new LBitmapData(event.target);
var bitmap = new LBitmap(bitmapdata);
layer.addChild(bitmap);
var sprite = new LSprite();
sprite.graphics.drawRect(3, "#000000", [0, 0, 190, 100],true,"#00FF00");
sprite.x = -100;
layer.addChild(sprite);
layer.filters = [new LColorMatrixFilter([0.3086,0.6094, 0.0820, 0, 0, 0.3086, 0.6094, 0.0820, 0, 0, 0.3086, 0.6094, 0.0820, 0, 0, 0, 0, 0, 1, 0])];
}
Methods
callParent
-
functionName
-
arguments
调用父类的函数。
Parameters:
-
functionName
String函数名
-
arguments
Array固定值arguments
Example:
function funA(){
LExtends(this,LObject,[]);
}
funA.prototype.myName = function(){
return "AAA";
}
function funB(){
LExtends(this,funA,[]);
}
funB.prototype.myName = function(){
return "BBB";
}
function funC(){
LExtends(this,funA,[]);
}
funC.prototype.myName = function(){
return this.callParent("myName",arguments);
}
LInit(1000/50,"legend",800,150,main);
function main(){
LGlobal.setDebug(true);
var objB = new funB();
trace(objB.myName());//BBB
var objC = new funC();
trace(objC.myName());//AAA
}
Properties
objectIndex
Int
public
对象的ID