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

Flash动画制作
巧用超级解霸在Flash V5.0中插入录像
教你用Flash MX来制作简单的课件界面
Flash MX 2004 ActionScript图文教程(二)
Flash MX 2004 ActionScript图文教程(三)
Flash MX 2004 ActionScript图文教程(四)
Flash MX 2004 ActionScript图文教程(五)
Flash MX 2004 ActionScript图文教程(六)
flash场景之间相互跳转的实现方法
Flash本地加密
FLASH -- 关于变量的问题FLASH -- 关于变量的问题
Flash5 画任意直线教程
Flash MX 视频导入功能详解
制作飞舞的蝴蝶
Flash MX 2004 ActionScript图文教程(七)
Flash MX 2004 ActionScript图文教程(八)
Flash MX 2004 ActionScript图文教程(九)
Flash MX 2004 ActionScript图文教程(十)
Flash教程 飞翔的文字
Flash MX 2004 ActionScript图文教程(十一)
制作Flash网站技巧拾零

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-04   浏览: 101 ::
收藏到网摘: 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