快速业务通道

Flash CS4教程:全脚本打造飘动的气泡

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-07

效果: 详细代码: functionball(r:int):MovieClip{//自定义函数ball,参数为r,整数型,返回值为MovieClip

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

varsh:MovieClip=newMovieClip();//声明一个影片剪辑类实例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();//结束填充

returnsh;//返回sh

}

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

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

varballs: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

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

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

varballs: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(varj:int=0;j<ballArr.length-1;j++){//创建一个for循环,循环次数比数组ballArr元素数少1

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

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

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

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

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

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

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

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

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

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

varty: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 关键词:气泡 飘动

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号