flash文字应用滤镜效果的as3代码
使用as3代码来实现为文字添加动态的滤镜效果,很炫也很费系统资源。as3代码如下:
stage.frameRate=30;
var wz:Mc=new Mc();//实例化文字元件,不必加入显示列表
var bmd:BitmapData=new BitmapData(wz.width+20,wz.height+30,true,0);
bmd.draw(wz);//用于给元件拍照的位图数据对象bmd
var bmd1:BitmapData=new BitmapData(550,400,false,0x000000);
var bit:Bitmap=new Bitmap(bmd1);
addChild(bit);//用于显示的位图数据对象bmd1
var arr:Array=[];//存坐标的数组
for (var w=0; w<bmd.width; w++) {
for (var h=0; h<bmd.height; h++) {
var co=bmd.getPixel32(w,h);//获取位图数据中每个像素的颜色,此颜色co仅用于获取文字轮廓线的像素点的坐标,设置颜色用的是下面color
co!=0?arr.push([w+40,h+140]):0;//如果不是黑色,则记下坐标(略加调整),以分数组形式存入数组
}
}
var color:uint=0xffffff*Math.random();
var m=0,n=0,a=1,b=0.5;
var cf:ConvolutionFilter=new ConvolutionFilter(3,3,[1,1,1,1,32,1,1,1,1],42);//卷积滤镜,最后的参数可设置拖影的长度,值越大,拖影越短
addEventListener(Event.ENTER_FRAME,frame);
function frame(e:Event):void {
m=Math.min(Math.max(m+a,-150),150);//m 的递增及范围
n=Math.min(Math.max(n+b,-20),20);//同上
m==-150||m==150?a*=-1:0; //到达边界,递增值取反
n==-20||n==20?b*=-1:0;
Math.random()<0.02?color=Math.random()*0xffffff:0;
for (var i=0; i<arr.length; i++) {
bmd1.setPixel(arr[i][0]+n,arr[i][1]+m,color<<i/1000);//设置每个像素点的颜色
}
bmd1.applyFilter(bmd1,bmd1.rect,new Point(),cf);
//对位图数据应用滤镜
}
bit.blendMode="screen";//应用混合模式,可显示出bmd1后面的背景图
本文地址:http://www.lxlong.net/archives/66.html 本文标题:flash文字应用滤镜效果的as3代码
没有评论 ▼