flash actionscript30 ConvolutionFilter.docx
《flash actionscript30 ConvolutionFilter.docx》由会员分享,可在线阅读,更多相关《flash actionscript30 ConvolutionFilter.docx(17页珍藏版)》请在冰豆网上搜索。
flashactionscript30ConvolutionFilter
ConvolutionFilter
属性 |方法 |事件 |样式 |效果 |常量 |示例
包
flash.filters
类
publicclassConvolutionFilter
继承
ConvolutionFilter
BitmapFilter
Object
语言版本:
ActionScript3.0
运行时版本:
AIR1.0,FlashPlayer9
ConvolutionFilter类应用矩阵盘绕滤镜效果。
卷积将输入图像的像素与相邻的像素合并以生成图像。
通过卷积,可以实现大量的图像效果,包括模糊、边缘检测、锐化、浮雕和斜角。
您可以将滤镜应用于任何显示对象(即,从DisplayObject类继承的对象),例如MovieClip、SimpleButton、TextField和Video对象,以及BitmapData对象。
若要创建卷积滤镜,请使用语法newConvolutionFilter()。
滤镜的具体使用取决于要应用滤镜的对象:
∙若要对影片剪辑、文本字段、按钮和视频应用滤镜,请使用filters属性(继承自DisplayObject)。
设置对象的filters属性不会修改相应的对象,而清除filters属性可以删除相应的滤镜。
∙若要对BitmapData对象应用滤镜,请使用BitmapData.applyFilter()方法。
对BitmapData对象调用applyFilter()会取得源BitmapData对象和滤镜对象,并最终生成一个过滤图像。
如果对显示对象应用滤镜,则该对象的cacheAsBitmap属性值将设置为true。
如果清除所有滤镜,将恢复cacheAsBitmap的原始值。
如果结果图像的宽度或高度超过2880像素,则不应用滤镜。
例如,如果您在放大某个大型影片剪辑时应用了滤镜,则在结果图像超过2880像素的限制时滤镜将关闭。
另请参见
flash.display.BitmapData.applyFilter()
flash.display.DisplayObject.filters
flash.display.DisplayObject.cacheAsBitmap
matrix
公共属性
属性
定义方
alpha:
Number
替换颜色的Alpha透明度值。
ConvolutionFilter
bias:
Number
要添加到矩阵转换结果中的偏差量。
ConvolutionFilter
clamp:
Boolean
指示是否应锁定图像。
ConvolutionFilter
color:
uint
要替换源图像之外的像素的十六进制颜色。
ConvolutionFilter
constructor:
Object
对类对象或给定对象实例的构造函数的引用。
Object
divisor:
Number
矩阵转换中使用的除数。
ConvolutionFilter
matrix:
Array
用于矩阵转换的值的数组。
ConvolutionFilter
matrixX:
Number
矩阵的x维度(矩阵中列的数目)。
ConvolutionFilter
matrixY:
Number
矩阵的y维度(矩阵中行的数目)。
ConvolutionFilter
preserveAlpha:
Boolean
指示是否已保留Alpha通道并且不使用滤镜效果,或是否对Alpha通道以及颜色通道应用卷积滤镜。
ConvolutionFilter
prototype:
Object
[静态]对类或函数对象的原型对象的引用。
Object
公共方法
方法
定义方
ConvolutionFilter(matrixX:
Number=0,matrixY:
Number=0,matrix:
Array=null,divisor:
Number=1.0,bias:
Number=0.0,preserveAlpha:
Boolean=true,clamp:
Boolean=true,color:
uint=0,alpha:
Number=0.0)
用指定参数初始化ConvolutionFilter实例。
ConvolutionFilter
clone():
BitmapFilter
返回此滤镜对象的副本。
ConvolutionFilter
hasOwnProperty(name:
String):
Boolean
指示对象是否已经定义了指定的属性。
Object
isPrototypeOf(theClass:
Object):
Boolean
指示Object类的实例是否在指定为参数的对象的原型链中。
Object
propertyIsEnumerable(name:
String):
Boolean
指示指定的属性是否存在、是否可枚举。
Object
setPropertyIsEnumerable(name:
String,isEnum:
Boolean=true):
void
设置循环操作动态属性的可用性。
Object
toString():
String
返回指定对象的字符串表示形式。
Object
valueOf():
Object
返回指定对象的原始值。
Object
属性详细信息
alpha
属性
alpha:
Number [读写]
语言版本:
ActionScript3.0
运行时版本:
AIR1.0,FlashPlayer9
替换颜色的Alpha透明度值。
有效值为0到1.0。
默认值为0。
例如,0.25设置透明度值为25%。
实现
publicfunctiongetalpha():
Number
publicfunctionsetalpha(value:
Number):
void
bias
属性
bias:
Number [读写]
语言版本:
ActionScript3.0
运行时版本:
AIR1.0,FlashPlayer9
要添加到矩阵转换结果中的偏差量。
偏差可增加每个通道的颜色值,以便暗色变得较明亮。
默认值为0。
实现
publicfunctiongetbias():
Number
publicfunctionsetbias(value:
Number):
void
clamp
属性
clamp:
Boolean [读写]
语言版本:
ActionScript3.0
运行时版本:
AIR1.0,FlashPlayer9
指示是否应锁定图像。
对于源图像之外的像素,如果值为true,则表明通过复制输入图像每个相应的边缘处的颜色值,沿着输入图像的每个边框按需要扩展输入图像。
如果值为false,则表明应按照color和alpha属性中的指定使用其它颜色。
默认值为true。
实现
publicfunctiongetclamp():
Boolean
publicfunctionsetclamp(value:
Boolean):
void
示例
以下示例使用BitmapData类创建两个框,其中一个框的大小是另一个框的一半。
在首次加载该示例时,将使用attachBitmap()在mc内绘制较大的框。
在单击mc并调用applyFilter()方法时,将会在smallBox作为源位图的基础上重绘BitmapData的largeBox实例。
由于applyFilter()会将smallBox绘制在Rectangle上,而后者的宽度和高度被指定为largeBox的宽度和高度,因此源位图要比绘制区域更小。
在本例中,ConvolutionFilter的clamp属性被设置为false,未被源位图smallBox覆盖的区域是由clampColor和clampAlpha变量确定的纯红色。
package{
importflash.display.Sprite;
importflash.display.BitmapData;
importflash.filters.ConvolutionFilter;
importflash.text.TextField;
importflash.geom.Rectangle;
importflash.geom.Point;
publicclassConvolutionClampExampleextendsSprite{
//Variablesthataffectclamping:
varclamp:
Boolean=false;
varclampColor:
Number=0xFF0000;
varclampAlpha:
Number=1;
//Forillustration,keepotherConvolutionFiltervariablesneutral:
varbias:
Number=0;
varpreserveAlpha:
Boolean=false;
//Also,constructaneutralmatrix
varmatrixCols:
Number=3;
varmatrixRows:
Number=3;
varmatrix:
Array=[1,1,1,
1,1,1,
1,1,1];
varfilter:
ConvolutionFilter=newConvolutionFilter(matrixCols,matrixRows,matrix,matrix.length,bias,preserveAlpha,clamp,clampColor,clampAlpha);
varlargeBoxWidth:
Number=100;
varlargeBoxHeight:
Number=100;
varlargeBox:
BitmapData=newBitmapData(largeBoxWidth,largeBoxWidth,true,0xCC00FF00);
varsmallBoxWidth:
Number=largeBoxWidth/2;
varsmallBoxHeight:
Number=largeBoxHeight/2;
varsmallBox:
BitmapData=newBitmapData(smallBoxWidth,smallBoxWidth,true,0xCC0000FF);
varmc:
MovieClip=this.createEmptyMovieClip("mc",this.getNextHighestDepth());
mc.attachBitmap(largeBox,this.getNextHighestDepth());
mc.onPress=function(){
largeBox.applyFilter(smallBox,
newRectangle(0,0,largeBoxWidth,largeBoxHeight),
newPoint(0,0),
filter);
}
}
}
color
属性
color:
uint [读写]
语言版本:
ActionScript3.0
运行时版本:
AIR1.0,FlashPlayer9
要替换源图像之外的像素的十六进制颜色。
它是一个没有Alpha成分的RGB值。
默认值为0。
实现
publicfunctiongetcolor():
uint
publicfunctionsetcolor(value:
uint):
void
divisor
属性
divisor:
Number [读写]
语言版本:
ActionScript3.0
运行时版本:
AIR1.0,FlashPlayer9
矩阵转换中使用的除数。
默认值为1。
如果除数是所有矩阵值的总和,则可调平结果的总体色彩强度。
忽略0值,此时使用默认值。
实现
publicfunctiongetdivisor():
Number
publicfunctionsetdivisor(value:
Number):
void
matrix
属性
matrix:
Array [读写]
语言版本:
ActionScript3.0
运行时版本:
AIR1.0,FlashPlayer9
用于矩阵转换的值的数组。
数组中的项数必须等于matrixX*matrixY。
矩阵盘绕基于一个nxm矩阵,该矩阵说明输入图像中的给定像素值如何与其相邻的像素值合并以生成最终的像素值。
每个结果像素通过将矩阵应用到相应的源像素及其相邻像素来确定。
对于3x3矩阵卷积,将以下公式用于每个独立的颜色通道:
dst(x,y)=((src(x-1,y-1)*a0+src(x,y-1)*a1....
src(x,y+1)*a7+src(x+1,y+1)*a8)/divisor)+bias
某些规格的滤镜在由提供SSE(SIMD流扩展)的处理器运行时执行速度更快。
以下是更快的卷积操作的条件:
∙滤镜必须是3x3滤镜。
∙所有滤镜项必须是介于-127和+127之间的整数。
∙所有滤镜项的总和不能包含大于127的绝对值。
∙如果任何滤镜项为负,则除数必须介于2.00001和256之间。
∙如果所有滤镜项都为正,则除数必须介于1.1和256之间。
∙偏差必须是整数。
注意:
如果使用不带参数的构造函数创建了ConvolutionFilter实例,则为矩阵属性赋值的顺序将影响滤镜的行为。
在以下情况中,矩阵数组已指定,而matrixX和matrixY属性仍设置为0(默认值):
publicvarmyfilter:
ConvolutionFilter=newConvolutionFilter();
myfilter.matrix=[0,0,0,0,1,0,0,0,0];
myfilter.matrixX=3;
myfilter.matrixY=3;
在以下情况中,矩阵数组已指定,而matrixX和matrixY属性设置为3:
publicvarmyfilter:
ConvolutionFilter=newConvolutionFilter();
myfilter.matrixX=3;
myfilter.matrixY=3;
myfilter.matrix=[0,0,0,0,1,0,0,0,0];
实现
publicfunctiongetmatrix():
Array
publicfunctionsetmatrix(value:
Array):
void
引发
TypeError—设置时Array为null
matrixX
属性
matrixX:
Number [读写]
语言版本:
ActionScript3.0
运行时版本:
AIR1.0,FlashPlayer9
矩阵的x维度(矩阵中列的数目)。
默认值为0。
实现
publicfunctiongetmatrixX():
Number
publicfunctionsetmatrixX(value:
Number):
void
matrixY
属性
matrixY:
Number [读写]
语言版本:
ActionScript3.0
运行时版本:
AIR1.0,FlashPlayer9
矩阵的y维度(矩阵中行的数目)。
默认值为0。
实现
publicfunctiongetmatrixY():
Number
publicfunctionsetmatrixY(value:
Number):
void
preserveAlpha
属性
preserveAlpha:
Boolean [读写]
语言版本:
ActionScript3.0
运行时版本:
AIR1.0,FlashPlayer9
指示是否已保留Alpha通道并且不使用滤镜效果,或是否对Alpha通道以及颜色通道应用卷积滤镜。
值为false表示卷积应用于所有通道,包括Alpha通道。
值为true表示只对颜色通道应用卷积。
默认值为true。
实现
publicfunctiongetpreserveAlpha():
Boolean
publicfunctionsetpreserveAlpha(value:
Boolean):
void
构造函数详细信息
ConvolutionFilter
()
构造函数
publicfunctionConvolutionFilter(matrixX:
Number=0,matrixY:
Number=0,matrix:
Array=null,divisor:
Number=1.0,bias:
Number=0.0,preserveAlpha:
Boolean=true,clamp:
Boolean=true,color:
uint=0,alpha:
Number=0.0)
语言版本:
ActionScript3.0
运行时版本:
AIR1.0,FlashPlayer9
用指定参数初始化ConvolutionFilter实例。
参数
matrixX:
Number(default=0)—矩阵的x维度(矩阵中列的数目)。
默认值为0。
matrixY:
Number(default=0)—矩阵的y维度(矩阵中行的数目)。
默认值为0。
matrix:
Array(default=null)—用于矩阵转换的值的数组。
数组中的项数必须等于matrixX*matrixY。
divisor:
Number(default=1.0)—矩阵转换中使用的除数。
默认值为1。
如果除数是所有矩阵值的总和,则可调平结果的总体色彩强度。
忽略0值,此时使用默认值。
bias:
Number(default=0.0)—要添加到矩阵转换结果的偏差。
默认值为0。
preserveAlpha:
Boolean(default=true)—false值表示未保留Alpha值,并且卷积适用于所有通道(包括Alpha通道)。
值为true表示只对颜色通道应用卷积。
默认值为true。
clamp:
Boolean(default=true)—对于源图像之外的像素,如果值为true,则表明通过复制输入图像给定边缘处的颜色值,沿着输入图像的每个边框按需要扩展输入图像。
如果值为false,则表明应按照color和alpha属性中的指定使用其它颜色。
默认值为true。
color:
uint(default=0)—要替换源图像之外的像素的十六进制颜色。
alpha:
Number(default=0.0)—替换颜色的Alpha。
方法详细信息
clone
()
方法
overridepublicfunctionclone():
BitmapFilter
语言版本:
ActionScript3.0
运行时版本:
AIR1.0,FlashPlayer9
返回此滤镜对象的副本。
返回
BitmapFilter—BitmapFilter,与原始ConvolutionMatrixFilter实例具有完全相同的属性的新ConvolutionFilter实例。
示例如何使用示例
以下示例将不同的卷积滤镜应用于图像文件。
滤镜构造函数调用buildChild()四次,以加载和显示图像的四个实例。
对buildChild()的每次调用都将函数作为参数,该函数不对第一个实例应用任何滤镜,而对后续的每个实例应用不同的卷积滤镜。
buildChild()函数创建一个名为loader的新Loader对象。
每次调用buildChild()时,将一个事件侦听器附加到Loader对象,以侦听complete事件,这些事件由传递给buildChild()的函数处理。
applyBrightness()、applySharpness()和applyOutline()函数使用matrix数组的不同值来实现不同的ConvolutionFilter效果。
注意:
为获得最佳效果,请使用宽度约为80像素的图像。
图像文件的名称和位置应与您传递给url属性的值相匹配。
例如,此示例中传递给url的值指向名为“Image.jpg”的图像文件,该图像文件与SWF文件位于同一目录中。
package{
importflash.display.DisplayObject;
importflash.display.Loader;
importflash.dis