当前位置: 首页 > 图文教程 > Flash动画 > ActionScript > Flash AS3实例教程:漂亮的水纹动画

ActionScript
FLASH 3D相册之利用BitmapData类制作
Flash 脚本游戏开发教程 第一课
Flash 脚本游戏开发教程第二课
Flash 脚本游戏开发教程第三课
Flash 脚本游戏开发教程第四课
Flash 脚本游戏开发教程第五课
Flash 脚本游戏开发教程第六课
Flash 脚本游戏开发教程第七课
Flash 脚本游戏开发教程第八课
Flash AS实现的蝌蚪摆尾动画的教程
从基础开始深入学Flash AS3教程(4)(译文)
从基础开始深入学Flash AS3教程(5)(译文)
从基础开始深入Flash AS3教程(2)(译文)
从基础开始深入学Flash AS3教程(3)(译文)
Flash AS3对单个图片进行角色动作化处理
从基础开始深入Flash AS3教程(1)(译文)
Flash教程:if条件语句的用法
Flash AS教程:_visible属性的详细讲解
Flash AS教程:图片环绕旋转效
Flash教程:trace()的使用

ActionScript 中的 Flash AS3实例教程:漂亮的水纹动画


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-03-20   浏览: 88 ::
收藏到网摘: n/a

鼠标划入看看水波:


详细代码:


var k:Number=0;//声明一个数值型变量k,初始值为0

var mc:MovieClip =new Mc();//声明一个影片剪辑类实例mc,链接库中类名为Mc的影片剪辑

addChild(mc);//把mc添加到显示列表

var bt1:BitmapData=new BitmapData(275,200,false,0x0);//声明一个位图数据类实例bt1(宽275,高200,不支持透明度,黑色)

var bt2:BitmapData=new BitmapData(275,200,false,0x0);//声明一个位图数据类实例bt2(宽275,高200,不支持透明度,黑色)

var bt3:BitmapData=new BitmapData(550,400);//声明一个位图数据类实例bt3(宽550,高400,默认支持透明度,白色)

var filter:ConvolutionFilter=new ConvolutionFilter(3,3,[.5,1,.5,1,0,1,.5,1,.5],3);//声明一个卷积滤镜的实例filter(矩阵有3列,3行,用于矩阵转换的值的数组,矩阵转换中使用的除数)

var newfilter:DisplacementMapFilter=new DisplacementMapFilter(bt1,new Point(0,0),4,4,50,50);//声明一个置换滤镜的实例newfilter(源显示对象,目标显示对象的左上角相对于映射图像左上角的偏移量,在映射图像中置换 x 结果的颜色通道蓝通道,在映射图像中置换 y结果的颜色通道蓝通道,用于缩放映射计算的 x 置换结果的乘数,用于缩放映射计算的 y 置换结果的乘数)

addEventListener(Event.ENTER_FRAME,onframe);//添加帧频事件侦听,调用函数onframe

addEventListener(MouseEvent.MOUSE_OVER,ondown);//添加鼠标滑入事件侦听,调用函数ondown

addEventListener(MouseEvent.MOUSE_OUT,ondown);//添加鼠标滑出事件侦听,调用函数ondown

function ondown(e:MouseEvent):void {//定义鼠标事件函数ondown

        k++>20?k=0:k=k;//k每帧增加1,如果k大于20,则k获取0,否则什么也不做

}

function Rect() {//自定义函数Rect

        bt1.fillRect(new Rectangle(mouseX/2,mouseY/2,2,2),0xffffff);//在bt1中进行矩形填充(范围(左上角坐标(mouseX/2,mouseY/2),宽2,高2),颜色为白色)

}

function onframe(e:Event):void {//定义事件函数onframe

        k%2==1?Rect():0;//如果k除以2的余数等于1,调用自定义函数Rect,否则什么都不做

        var temp:BitmapData=bt2.clone();//声明一个位图数据类实例temp,获取bt2的副本

        bt2.applyFilter(bt1,new Rectangle(0,0,550,400),new Point(0,0),filter);//在位图bt2中应用滤镜(源位图,源矩形区域,目标图像中与源矩形左上角对应的点,卷积滤镜对象)

        bt2.draw(temp,null,null,"subtract",null,false);//在位图bt2中拍照(源显示对象,不变形,没有颜色转换,混合模式,绘制整个源对象,不做平滑处理)

        bt3.draw(bt2,new Matrix(2,0,0,2),new ColorTransform(1,1,1,1,127,127,127),null,null,true);//在位图bt3中拍照(源显示对象,在X和Y方向上放大2倍,颜色各红绿蓝通道偏移量均增大127,无混合模式,绘制整个源对象,平滑处理)

        newfilter.mapBitmap=bt3;//置换滤镜newfilter的包含置换映射数据的位图对象获取bt3

        mc.filters=[newfilter];//为mc添加置换滤镜

        temp.dispose();//设置temp的宽和高都为0,不再调用,即从内存中清除

        temp=bt1;//temp获取bt1

        bt1=bt2;//bt1获取bt2

        bt2=temp;//bt2获取temp

}

//标题:将文本转换为位图

var bmd:BitmapData;//声明一个位图数据类变量bmd

var bit:Bitmap;//声明一个位图显示类变量bit

var txt:TextField =new TextField();//声明一个文本类实例txt

txt.defaultTextFormat=new TextFormat("华文隶书",56,0xff0000);//设置txt的格式(字体,大小,颜色)

txt.autoSize=TextFieldAutoSize.LEFT;//txt自动调整大小并左对齐

txt.filters =[new DropShadowFilter()];//txt应用投影滤镜

txt.text="恭贺新春快乐";//txt的内容

bmd=new BitmapData(txt.width,txt.height,true,0);//变量获取位图数据类的实例(宽、高都为文本的宽高,支持透明度,颜色为黑色)

bmd.draw(txt);//在位图上为文本拍照

bit=new Bitmap(bmd);//变量bit获取位图显示类的实例,用来显示bmd

bit.x=100;//bit的X坐标获取100

bit.y=50;//bit的Y坐标获取50

mc.addChild(bit);//把bit添加到mc中