Flash ActionScript 30 语言和组件参考DisplacementMapFilter.docx
《Flash ActionScript 30 语言和组件参考DisplacementMapFilter.docx》由会员分享,可在线阅读,更多相关《Flash ActionScript 30 语言和组件参考DisplacementMapFilter.docx(18页珍藏版)》请在冰豆网上搜索。
FlashActionScript30语言和组件参考DisplacementMapFilter
包
flash.filters
类
publicfinalclassDisplacementMapFilter
继承
DisplacementMapFilter
BitmapFilter
Object
语言版本:
ActionScript3.0
运行时版本:
AIR1.0,FlashPlayer9
DisplacementMapFilter类使用指定的BitmapData对象(称为置换图图像)的像素值执行对象置换。
您可以使用此滤镜将扭曲或斑点效果应用于从DisplayObject类中继承的任何对象,例如MovieClip、SimpleButton、TextField和Video对象,以及BitmapData对象。
滤镜的具体使用取决于要应用滤镜的对象:
∙若要将滤镜应用于显示对象,请使用显示对象的filters属性。
设置对象的filters属性不会修改相应的对象,而清除filters属性可以删除相应的滤镜。
∙若要对BitmapData对象应用滤镜,请使用BitmapData.applyFilter()方法。
对BitmapData对象调用applyFilter()会取得源BitmapData对象和滤镜对象,并生成一个过滤后的图像。
如果对显示对象应用滤镜,则该显示对象的cacheAsBitmap属性值将设置为true。
如果清除所有滤镜,将恢复cacheAsBitmap的原始值。
此滤镜使用以下公式:
dstPixel[x,y]=srcPixel[x+((componentX(x,y)-128)*scaleX)/256,y+((componentY(x,y)-128)*scaleY)/256)
其中,componentX(x,y)从mapBitmap属性获得(x-mapPoint.x,y-mapPoint.y)处的componentX属性颜色值。
滤镜使用的映射图像会进行缩放,以匹配舞台缩放比例。
当对象自身呈一定的比例时,它不会进行缩放。
此滤镜支持舞台缩放。
但不支持常规缩放、旋转和倾斜。
如果对象本身进行了缩放(如果将scaleX和scaleY属性设置为除1.0以外的其它值),滤镜效果将不进行缩放。
只有用户在舞台上进行放大时它才会缩放。
查看示例
另请参见
flash.display.BitmapData.applyFilter()
flash.display.DisplayObject.filters
flash.display.DisplayObject.cacheAsBitmap
公共属性
属性
定义方
alpha:
Number
指定对于超出范围的替换应用的Alpha透明度值。
DisplacementMapFilter
color:
uint
指定对于超出范围的替换应用什么颜色。
DisplacementMapFilter
componentX:
uint
说明在映射图像中使用哪个颜色通道来置换x结果。
DisplacementMapFilter
componentY:
uint
说明在映射图像中使用哪个颜色通道来置换y结果。
DisplacementMapFilter
constructor:
Object
对类对象或给定对象实例的构造函数的引用。
Object
mapBitmap:
BitmapData
包含置换映射数据的BitmapData对象。
DisplacementMapFilter
mapPoint:
Point
一个值,它包含目标显示对象的左上角相对于映射图像左上角的偏移量。
DisplacementMapFilter
mode:
String
滤镜模式。
DisplacementMapFilter
prototype:
Object
[静态]对类或函数对象的原型对象的引用。
Object
scaleX:
Number
用于缩放映射计算的x置换结果的乘数。
DisplacementMapFilter
scaleY:
Number
用于缩放映射计算的y置换结果的乘数。
DisplacementMapFilter
公共方法
方法
定义方
DisplacementMapFilter(mapBitmap:
BitmapData=null,mapPoint:
Point=null,componentX:
uint=0,componentY:
uint=0,scaleX:
Number=0.0,scaleY:
Number=0.0,mode:
String="wrap",color:
uint=0,alpha:
Number=0.0)
用指定参数初始化DisplacementMapFilter实例。
DisplacementMapFilter
clone():
BitmapFilter
返回此滤镜对象的副本。
DisplacementMapFilter
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.0到1.0之间的标准值。
例如,0.25设置透明度值为25%。
默认值为0。
如果mode属性设置为DisplacementMapFilterMode.COLOR,则使用此属性。
实现
publicfunctiongetalpha():
Number
publicfunctionsetalpha(value:
Number):
void
color
属性
color:
uint [读写]
语言版本:
ActionScript3.0
运行时版本:
AIR1.0,FlashPlayer9
指定对于超出范围的替换应用什么颜色。
置换的有效范围是0.0到1.0。
值采用十六进制格式。
color的默认值为0。
如果mode属性设置为DisplacementMapFilterMode.COLOR,则使用此属性。
实现
publicfunctiongetcolor():
uint
publicfunctionsetcolor(value:
uint):
void
componentX
属性
componentX:
uint [读写]
语言版本:
ActionScript3.0
运行时版本:
AIR1.0,FlashPlayer9
说明在映射图像中使用哪个颜色通道来置换x结果。
可能的值为BitmapDataChannel常量:
∙BitmapDataChannel.ALPHA
∙BitmapDataChannel.BLUE
∙BitmapDataChannel.GREEN
∙BitmapDataChannel.RED
实现
publicfunctiongetcomponentX():
uint
publicfunctionsetcomponentX(value:
uint):
void
另请参见flash.display.BitmapDataChannel
componentY
属性
componentY:
uint [读写]
语言版本:
ActionScript3.0
运行时版本:
AIR1.0,FlashPlayer9
说明在映射图像中使用哪个颜色通道来置换y结果。
可能的值为BitmapDataChannel常量:
∙BitmapDataChannel.ALPHA
∙BitmapDataChannel.BLUE
∙BitmapDataChannel.GREEN
∙BitmapDataChannel.RED
实现
publicfunctiongetcomponentY():
uint
publicfunctionsetcomponentY(value:
uint):
void
另请参见flash.display.BitmapDataChannel
mapBitmap
属性
mapBitmap:
BitmapData [读写]
语言版本:
ActionScript3.0
运行时版本:
AIR1.0,FlashPlayer9
包含置换映射数据的BitmapData对象。
实现
publicfunctiongetmapBitmap():
BitmapData
publicfunctionsetmapBitmap(value:
BitmapData):
void
引发
TypeError—设置时BitmapData为null
另请参见flash.display.BitmapData
mapPoint
属性
mapPoint:
Point [读写]
语言版本:
ActionScript3.0
运行时版本:
AIR1.0,FlashPlayer9
一个值,它包含目标显示对象的左上角相对于映射图像左上角的偏移量。
实现
publicfunctiongetmapPoint():
Point
publicfunctionsetmapPoint(value:
Point):
void
引发
TypeError—设置时Point为null
另请参见flash.geom.Point
mode
属性
mode:
String [读写]
语言版本:
ActionScript3.0
运行时版本:
AIR1.0,FlashPlayer9
滤镜模式。
可能的值为DisplacementMapFilterMode常量:
∙DisplacementMapFilterMode.WRAP--将置换值折返到源图像的另一侧。
∙DisplacementMapFilterMode.CLAMP--将置换值锁定在源图像的边缘。
∙DisplacementMapFilterMode.IGNORE--如果置换值超出了范围,则忽略置换并使用源像素。
∙DisplacementMapFilterMode.COLOR--如果置换值在图像之外,则替换color和alpha属性中的值。
实现
publicfunctiongetmode():
String
publicfunctionsetmode(value:
String):
void
引发
TypeError—设置时String为null
ArgumentError—模式字符串不是有效类型之一
另请参见flash.filters.DisplacementMapFilterMode
scaleX
属性
scaleX:
Number [读写]
语言版本:
ActionScript3.0
运行时版本:
AIR1.0,FlashPlayer9
用于缩放映射计算的x置换结果的乘数。
实现
publicfunctiongetscaleX():
Number
publicfunctionsetscaleX(value:
Number):
void
scaleY
属性
scaleY:
Number [读写]
语言版本:
ActionScript3.0
运行时版本:
AIR1.0,FlashPlayer9
用于缩放映射计算的y置换结果的乘数。
实现
publicfunctiongetscaleY():
Number
publicfunctionsetscaleY(value:
Number):
void
构造函数详细信息
DisplacementMapFilter
()
构造函数
publicfunctionDisplacementMapFilter(mapBitmap:
BitmapData=null,mapPoint:
Point=null,componentX:
uint=0,componentY:
uint=0,scaleX:
Number=0.0,scaleY:
Number=0.0,mode:
String="wrap",color:
uint=0,alpha:
Number=0.0)
语言版本:
ActionScript3.0
产品版本:
Lite2.0
运行时版本:
AIR1.0,FlashPlayer9
用指定参数初始化DisplacementMapFilter实例。
参数
mapBitmap:
BitmapData(default=null)—包含置换映射数据的BitmapData对象。
mapPoint:
Point(default=null)—一个值,它包含目标显示对象的左上角相对于映射图像左上角的偏移量。
componentX:
uint(default=0)—说明在映射图像中使用哪个颜色通道来置换x结果。
可能的值为BitmapDataChannel常量。
componentY:
uint(default=0)—说明在映射图像中使用哪个颜色通道来置换y结果。
可能的值为BitmapDataChannel常量。
scaleX:
Number(default=0.0)—用于缩放映射计算的x置换结果的乘数。
scaleY:
Number(default=0.0)—用于缩放映射计算的y置换结果的乘数。
mode:
String(default="wrap")—滤镜模式。
可能的值为DisplacementMapFilterMode常量。
color:
uint(default=0)—指定对于超出范围的替换应用什么颜色。
置换的有效范围是0.0到1.0。
如果mode设置为DisplacementMapFilterMode.COLOR,则使用此参数。
alpha:
Number(default=0.0)—指定对于超出范围的替换应用什么Alpha值。
它被指定为0.0到1.0之间的标准值。
例如,0.25设置透明度值为25%。
如果mode设置为DisplacementMapFilterMode.COLOR,则使用此参数。
另请参见
flash.display.BitmapDataChannel
flash.filters.DisplacementMapFilterMode
方法详细信息
clone
()
方法
overridepublicfunctionclone():
BitmapFilter
语言版本:
ActionScript3.0
运行时版本:
AIR1.0,FlashPlayer9
返回此滤镜对象的副本。
返回
BitmapFilter—具有与原始实例相同的所有属性的新DisplacementMapFilter实例。
示例如何使用示例
以下示例通过放射状渐变填充绘制一个正方形,创建一个文本字段和一个BitmapData对象,并将置换图滤镜应用于DisplacementMapFilterExample对象。
该示例的一般工作流程如下:
1.该类为背景颜色、文本字段标签以及将用于各种函数的大小和偏移定义变量。
2.构造函数调用draw()方法,该方法使用Graphics类的方法通过放射状渐变填充绘制一个正方形。
请注意,graphics是扩展Sprite的DisplacementMapFilterExample对象的属性。
3.构造函数调用createLabel()方法,该方法创建显示labelText值的文本字段,并将其添加到显示列表。
4.构造函数调用createFilter()方法,该方法执行以下操作:
o为滤镜对象创建名为filter的变量。
o调用getDisplacementMapFilter()方法并将其返回值赋予filter变量。
o将filter传递给DisplacementFilterExample对象(主类)的filters属性。
5.getBitmapFilter()方法创建一个名为mapBitmap的BitmapData对象,并将createBitmapData()方法的结果赋予它。
mapBitmap对象以及其它变量定义了新的置换图滤镜。
6.createBitmapData()方法创建新的BitmapData对象,该对象基于DisplacementMapFilterExample对象的当前内容。
它基于bitmapData创建新位图,并将该位图添加到舞台。
package{
importflash.display.Bitmap;
importflash.display.BitmapData;
importflash.display.BitmapDataChannel;
importflash.display.GradientType;
importflash.display.SpreadMethod;
importflash.display.Sprite;
importflash.filters.BitmapFilter;
importflash.filters.DisplacementMapFilter;
importflash.filters.DisplacementMapFilterMode;
importflash.geom.Matrix;
importflash.geom.Point;
importflash.text.TextField;
publicclassDisplacementMapFilterExampleextendsSprite{
privatevarbgColor:
uint=0xFFCC00;
privatevarsize:
uint=200;
privatevaroffset:
uint=90;
privatevarlabelText:
String="Watchthetextbendwiththedisplacementmap";
publicfunctionDisplacementMapFilterExample(){
draw();
createLabel();
createFilter();
}
privatefunctioncreateFilter():
void{
varfilter:
BitmapFilter=getBitmapFilter();
filters=newArray(filter);
}
privatefunctiongetBitmapFilter():
BitmapFilter{
varmapBitmap:
BitmapData=createBitmapData();
varmapPoint:
Point=newPoint(0,0);
varchannels:
uint=BitmapDataChannel.RED;
varcomponentX:
uint=channels;
varcomponentY:
uint=channels;
varscaleX:
Number=0.5;
varscaleY:
Number=-30;
varmode:
String=DisplacementMapFilterMode.CLAMP;
varcolor:
uint=0;
varalpha:
Number=0;
returnnewDisplacementMapFilter(mapBitmap,
mapPoint,
componentX,
componentY,
scaleX,
scaleY,
mode,
color,
alpha);
}
privatefunctiondraw():
void{
varmatrix:
Matrix=newMatrix();
matrix.createGradientBox(size,size);
g