当前位置: 首页 > 图文教程 > Flash动画 > Flash动画制作 > Flash CS4实例教程:漂亮的气泡动画

Flash动画制作
fmx2004 1000问(5)
Flash MX 2004 组件事件简单调试器
fmx2004 1000问(2)
Action Script 2.0新手调试
Flash 2004 MX Components
flash action 详解(9)
flash action 详解(7)
flash action 详解(1)
flash action 详解(6)
一个用纯AS写的正态曲线画法
flash action 详解(3)
浅谈AS的绘图功能及几个简单的实例
AS的基本代码解释(2)
flash action 详解(2)
flash action 详解(10)
运用for循环来对多个mc进行检测
极坐标在绘画方法中的运用
用Flash 2004编写简单的运算类
flash action 详解(4)
flash action 详解(5)

Flash动画制作 中的 Flash CS4实例教程:漂亮的气泡动画


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

效果:


详细代码:

function ball(r:int):MovieClip {//自定义函数 ball,参数为 r,整数型,返回值为 MovieClip 

        var col:uint=0xffffff*Math.random();//声明一个无符号整数型变量 col,获取任意颜色 

        var sh:MovieClip=new MovieClip();//声明一个影片剪辑类实例 sh 

        sh.graphics.beginGradientFill(GradientType.RADIAL,[0xffffff,col,col],[0.5,1,1],[0,200,255]);//在 sh 中设置渐变填充样式(放射状渐变,颜色,透明度,色块位置) 

        sh.graphics.drawCircle(0,0,r);//在 sh 中画圆(圆心坐标(0,0),半径为参数r) 

        sh.graphics.endFill();//结束填充 

        return sh;//返回 sh 

}

var ballArr:Array=[];//声明一个空数组 ballArr 

for (var i:int=0; i<10; i++) {//创建一个 for 循环,循环 10次 

        var balls:MovieClip=ball(Math.random()*20+20);//声明一个影片剪辑类实例balls,调用函数 ball(参数r 半径的值为 20-40 之间的随机值) 

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

        balls.x=Math.random()*(stage.stageWidth-balls.width)+balls.width/2;//balls 的 X 坐标 

        balls.y=Math.random()*(stage.stageHeight-balls.height)+balls.height/2;//balls 的 Y坐标,使它出现在舞台的任意位置 

        balls.vx=Math.random()*2-1;//为 balls 设置自定义属性 vx,数值为-1-1 之间的随机数,表示 X 方向的速度 

        balls.vy=Math.random()*2-1;//为 balls 设置自定义属性 vy,数值为-1-1 之间的随机数,表示 Y 方向的速度 

        ballArr.push(balls);//把 balls 添加到数组 ballArr 中 

}

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

function frame(e) {//定义帧频事件函数 frame 

        for (var i:int=0; i<ballArr.length; i++) {//创建一个 for循环,循环次数为数组 ballArr 的元素数 

                var balls:MovieClip=ballArr[i];//声明一个影片剪辑类实例 balls,获取数组 ballArr 的元素

                balls.x+=balls.vx;//balls的 X 坐标每帧增加balls.vx 

                balls.y+=balls.vy;//balls的 Y 坐标每帧增加balls.vy 

                if (balls.x<balls.width/2) {//如果balls 出了舞台左边缘 

                        balls.x=balls.width/2;//balls 的 X坐标获取balls 宽度的一半 

                        balls.vx*=-1;//balls.vx 获取它的相反数 

                }

                if (balls.x>stage.stageWidth-balls.width/2) {//如果 alls 出了舞台右边缘 

                        balls.x=stage.stageWidth-balls.width/2;//balls 的 X 坐标获取场景宽度与 balls 宽度一半的差 

                        balls.vx*=-1;//balls.vx 获取它的相反数 

                }

                if (balls.y<balls.height/2) {//如果 balls出了舞台上边缘 

                        balls.y=balls.height/2;//balls 的 Y坐标获取 balls 高度的一半 

                        balls.vy*=-1;//balls.vy 获取它的相反数 

                }

                if (balls.y>stage.stageHeight-balls.height/2) {//如果 balls 出了舞台下边缘 

                        balls.y=stage.stageHeight-balls.height/2;//balls 的 Y 坐标获取舞台高度与 balls 高度一半的差 

                        balls.vy*=-1;//balls.vy 获取它的相反数 

                }

        }

        for (var j:int=0; j<ballArr.length-1; j++) {//创建一个 for 循环,循环次数比数组 ballArr 元素数少 1 

                var ball0:MovieClip=ballArr[j];//声明一个影片剪辑类实例 ball0,获取数组 ballArr 的元素 

                for (var m:int=j+1; m<ballArr.length; m++) {//创建一个 for 循环, 

                        var ball1:MovieClip=ballArr[m];//声明一个影片剪辑类实例 ball1,获取数组 ballArr 的元素 

                        var dx:Number=ball1.x-ball0.x;//声明一个数值型变量 dx,获取 

                        var dy:Number=ball1.y-ball0.y;//声明一个数值型变量 dy,获取 

                        var jl:Number=Math.sqrt(dx*dx+dy*dy);//声明一个数值型变量 jl,获取小球的距离 

                        var qj:Number=ball0.width/2+ball1.width/2;//声明一个数值型变量获取小球半径之和 

                        if (jl<=qj) {//如果 jl 小于等于 qj 

                                var angle:Number=Math.atan2(dy,dx);//声明一个数值型变量angle,获取ball1 相对于 ball0 的角度 

                                var tx:Number=ball0.x+Math.cos(angle)*qj*1.01;//声明一个数值型变量 tx,获取目标点的 X坐标 

                                var ty:Number=ball0.y+Math.sin(angle)*qj*1.01;//声明一个数值型变量 ty,获取目标点的 Y坐标

                                ball0.vx=- (tx-ball1.x);//ball0 在X 方向的速度 

                                ball0.vy=- (ty-ball1.y);//ball0 在Y 方向的速度 

                                ball1.vx=(tx-ball1.x);//ball1 在 X方向的速度 

                                ball1.vy=(ty-ball1.y);//ball1 在 Y方向的速度 

                        }

                }

        }

}
附件下载:全脚本飘动的气泡.rar