1. 在位图上应用滤镜
使用BitmapData类的applyFilter()
destBmp.applyFilter(sourceBitmapData, sourceRect, destPoint, filter);
sourceBitmapData -- 要使用的输入位图图像。源图像可以是另一个BitmapData对象,也可以引用当前BitmapData实例
sourceRect -- 定义要用作输入的源图像区域的矩形
destPoint -- 目标图像(当前BitmapData实例)中与源矩形的左上角对应的点
filter -- 用于执行过滤操作的滤镜对象
如果 BitmapData 对象和指定为 sourceBitmapData 参数的对象是同一对象,应用程序将使用该对象的临时副本来执行滤镜。为了获得最佳性能,请避免这种情况
可以直接定义Bitmap.filters属性,它不会直接接触BitmapData的像素数据,因为滤镜只应用在包装BitmapData的Bitmap上
package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Sprite; import flash.events.Event; import flash.filters.BlurFilter; import flash.geom.Point; public class Sample0319 extends Sprite { private var image:Bitmap; private var blurFilter:BlurFilter; private var point:Point; public function Sample0319() { image = new Bitmap(); image.bitmapData = new BitmapData(stage.stageWidth,stage.stageHeight,false,0x000000); this.addChild(image); blurFilter = new BlurFilter(); point = new Point(); this.addEventListener(Event.ENTER_FRAME,onEnterFrame); } private function onEnterFrame(target:Event):void { for(var i:uint=0;i<100;i++) { image.bitmapData.setPixel(mouseX + Math.random()*20 - 10, mouseY + Math.random()*20 - 10, 0xFFFFFF); } image.bitmapData.applyFilter(image.bitmapData,image.bitmapData.rect,point,blurFilter); } } }
2. 位图的淡出
使用BitmapData类的pixelDissolve()方法
seed = pixelDissolve(
sourceBitmapData:BitmapData, //要使用的源位图图像。源图像可以是另一个BitmapData对象,也可以是目标位图自身
sourceRect:Rectangle, //源位图区域的矩形(一般等于目标位图的大小)
destPoint:Point, //目标位图(当前BitmapData实例)中与源矩形的左上角对应的点
randomSeed:int = 0, //用于开始像素溶解的随机种子(第一次可随意定义)
numPixels:int = 0, //每次拷贝多少像素,默认值是源区域(宽度×高度)的1/30
fillColor:uint = 0 //一个ARGB颜色值,用于填充其原值等于目标值的像素(即目标位图淡出为该种颜色) ):int
* 该函数每次调用,都返回用于后续调用的新随机种子值
* 可以通过 已拷贝的像素总数 是否大于 位图宽度×位图高度,来判断是否拷贝完成
package { import flash.display.Bitmap; import flash.display.Loader; import flash.display.LoaderInfo; import flash.display.Sprite; import flash.events.Event; import flash.geom.Point; import flash.net.URLRequest; public class Sample0319 extends Sprite { private var imageSmall:Bitmap; private var imageBig:Bitmap; private var seed:uint; private var pixelComplete:uint = 0; public function Sample0319() { var loader:Loader = new Loader(); loader.load(new URLRequest("1.jpg")); loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoadSmallComplete); loader = new Loader(); loader.load(new URLRequest("2.jpg")); loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoadBigComplete); this.addEventListener(Event.ENTER_FRAME,onEnterFrame); } private function onLoadSmallComplete(event:Event):void { var tmp:LoaderInfo = event.target as LoaderInfo; imageSmall = tmp.loader.content as Bitmap; this.addChild(imageSmall); } private function onLoadBigComplete(event:Event):void { var tmp:LoaderInfo = event.target as LoaderInfo; imageBig = tmp.loader.content as Bitmap; //this.addChild(imageBig); //imageBig.x = 200; } private function onEnterFrame(event:Event):void { if(imageSmall!=null && imageBig!=null) { //每次拷贝总像素的1%,如果是30帧播放的话,即1秒完成30%,全部完成要3秒左右 var numPixels:uint = imageSmall.bitmapData.width * imageSmall.bitmapData.height / 100; seed = imageSmall.bitmapData.pixelDissolve( imageBig.bitmapData, imageSmall.bitmapData.rect, new Point(), seed, numPixels); pixelComplete += numPixels; if(pixelComplete > imageSmall.bitmapData.width * imageSmall.bitmapData.height) { this.removeEventListener(Event.ENTER_FRAME,onEnterFrame); } } } } }
3. 滚动位图
使用BitmapData类的scroll(x,y)方法,将图像按一定量的(x,y)像素进行滚动。滚动区域之外的边缘区域保持不变
x -- 水平滚动量
y -- 垂直滚动量
package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.LoaderInfo; import flash.display.Shape; import flash.display.Sprite; import flash.events.Event; public class Sample0320 extends Sprite { private var image:Bitmap; public function Sample0320() { var circle:Shape = new Shape(); circle.graphics.beginFill(0xFFFF00); for(var i:int=20;i<200;i=i+20) { circle.graphics.drawCircle(i,i,10); } circle.graphics.endFill(); //this.addChild(circle); image = new Bitmap(); image.bitmapData = new BitmapData(stage.stageWidth,stage.stageHeight,false,0x000000); image.bitmapData.draw(circle); this.addChild(image); this.addEventListener(Event.ENTER_FRAME,onEnterFrame); } private function onEnterFrame(event:Event):void { if(image!=null) { image.bitmapData.scroll(-1,-1); } } } }
4. 设置文本框的边框、背景与前景色
默认状态下,文本框的边框和背景都是禁用的。所以在设置之前需要先启用;前景色可直接设置。
边框 -- TextField.border = true; TextField.borderColor = 0xFF0000;
背景 -- TextField.background = true; TextField.backgroundColor = 0xFF0000;
前景色 -- TextField.textColor = 0xFF0000;
5. 设置文本框为可输入,不能选择及粘贴
设置TextField.type属性为TextFieldType.INPUT,可以将文本框定义为可输入。默认是TextFieldType.DYNAMIC(动态文本框,可以由ActionScript控制,但用户无法输入)
设置TextField.selectable = false,则文本字段中的文本不响应来自鼠标或键盘的选择命令,并且不能使用“复制”命令复制文本。默认为true
6. 设置文本框为密码输入框
设置TextField.displayAsPassword = true;
7. 限制文本输入
设置TextField.restrict,例如设置TextField.restrict = "abc",则只允许输入字符abc,以大写形式输入也会变成小写。
package { import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFieldType; public class Sample0323 extends Sprite { public function Sample0323() { var text:TextField = new TextField(); text.type = TextFieldType.INPUT; text.border = true; text.borderColor = 0xFFFF00; text.height = 20; text.restrict = "a-z0-9";//允许a-z和0-9之间的字符 //text.restrict = "0-9^5"; //允许除了5以外的所有数字 //text.restrict = "^\u001A"; //不允许(Control-Z) 产生的字符(Unicode编码) //text.restrict = "^\\-"; //特殊符号可通过(\\)进行转义 this.addChild(text); } } }
8. 限制文本框输入字符数
设置TextField.maxChars = 5,则为最大允许输入5个字符。如果设为null则表示不限制
9. 显示HTML格式文本
设置htmlText属性值为HTML内容
package { import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFieldType; public class Sample0323 extends Sprite { public function Sample0323() { var text:TextField = new TextField(); text.type = TextFieldType.INPUT; text.border = true; text.borderColor = 0xFFFF00; text.height = 20; text.htmlText = "<a href='http://www.baidu.com/' target='_blank'><i><u>跳转到百度</u></i></a>"; text.appendText("增加的内容"); this.addChild(text); } } }
10. 显示HTML文本时压缩空格
设置condenseWhite属性为true
package { import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFieldType; public class Sample0323 extends Sprite { public function Sample0323() { var text:TextField = new TextField(); text.type = TextFieldType.INPUT; text.border = true; text.borderColor = 0xFFFF00; text.height = 20; text.condenseWhite = true;//必须在赋值前设置,否则无效 text.htmlText = "hello world!"; this.addChild(text); } } }