Flash CS4来制作漂亮的气泡动画教程
程序员文章站
2022-06-02 14:43:58
本教程向脚本之家的朋友介绍用Flash CS4来制作漂亮的气泡动画,制作出来气泡真的很好看,制作效果是采用代码形式实现,觉得很不错,转发过来,感兴趣的朋友可以一起来学习
... 14-07-14...
本教程主要用flash cs4来制作漂亮的气泡动画教程,制作出来气泡真的很好看,制作效果是采用代码形式实现,觉得很不错,转发过来,感兴趣的朋友可以一起来学习。
先看看效果图:
详细代码:
复制代码
代码如下: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方向的速度
}
}
}
}
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方向的速度
}
}
}
}
教程结束,以上就是flash cs4来制作漂亮的气泡动画过程,希望大家喜欢,并有所帮助!