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

Flash动画制作
Flash新手入门教程:AS2代码中duplicateMOvieClip的应用
Flash新手入门教程:AS代码实现漂亮的立体球旋转效果
Flash新手入门教程:AS代码打造漂亮的螺旋上升效果
Flash新手入门教程:初识Flash的开始页面、界面、工具栏
Flash新手入门教程:文件的导出和导入
Flash新手入门教程:AS入门第一课_认识编程环境
Flash cs3仿真艺术设计3.2:遮罩运用制作飘扬的旗帜
Flash AS3.0菜鸟学飞教程:创建Bitmap类
Flash AS 3.0入门教程:初识AS 3.0
Flash cs3仿真艺术设计3.3:遮罩运用打造光圈变换效果
Flash AS3.0菜鸟学飞教程:用反射动态创建实例
Flash cs3仿真艺术设计3.4:遮罩运用制作手写字效果
Flash cs3仿真艺术设计3.5:遮罩运用之聚光灯效果
Flash AS3.0菜鸟学飞教程:代码的位置
Flash实例教程:AS 3.0打造漂亮的水汶效果
Flash cs3仿真艺术设计3.6:运用遮罩打造焦点效果
Flash AS 3.0实例教程:Main类打造发散效果
Flash cs3仿真艺术设计4.1:阴影的基本运用
Flash cs3仿真艺术设计4.2:阴影之投影的应用
Flash cs3仿真艺术设计4.3:阴影之透视阴影

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


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