马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
占用硬盘空间少,所以被广泛应用于游戏、网络视频、网站广告、交互设计等。
poluoluo中心提醒:这个Flash教程将使用AS3.0的速率向量和重置工具的技能来完成喷泉效果。
先看效果演示:
在这个实例教程中,我们将先容使用速率向量和重置工具的技能来完成喷泉效果。所谓向量就是无方向的量。好比一辆车从东向西以80千米每小时的速率行驶,那末我们就能够失掉汽车的速率向量,它包含两个元素:速率,每小时80千米,偏向,由东向西。
上面我们来剖析一下喷泉是如何构成的。
喷泉是多少个水珠向上放射,然后又受重力影响失落回空中。这个历程的速率向量有哪些,详细又是怎样的呢?很简单发明最少的两个力,一个是使水珠向上放射的外力,一个是使水珠失落回空中的重力。
外力的速率向量:速率我设为10-20间的随机数,偏向是向上的那就必定是y轴上的正数了。将这个速率向量加到水珠上就使水珠向上放射了。
详细做法是:在ENTER_FRAME事务中这水珠的y值加上-10到-20间的一个随机数。
重力的速率向量:速率就对照小了我设为0.5,偏向则是y轴上的正值。一样加到ENTER_FRAME事务中,如许水珠在放射后就会失落回地上。
另有个成绩,由于速率向量是加在ENTER_FRAME事务中的,水珠便可能一向按这些速率向量活动,面阔别舞台,那喷泉就不知会喷到甚么中央往了。
要办理这个成绩,就要将超越舞台界限的水珠从头定位到放射口,如许就构成了不中断的放射了。
好了,下面剖析了效果发生办法,上面就来制造。
第一步是要画一个水珠,新建一个影片剪辑元件,用放射添补画一个椭圆,左色标为红色,通明度100%,右色标略带点灰色,通明度50%。在属性面板中设置椭圆在宽为2像素,高为5像素。在库中右击该元件,翻开毗连窗口,(cs4翻开属性窗口),设置一个类名,我设的是pall。
接上去回到主场景,翻开帧举措面板,我们来写代码。
喷泉是由多少水珠构成的,几呢?我整了500个:
varcount:int=500;
重力速率向量:
varzl:Number=0.5;
将这500个水珠放到一个数组中:
varballs:Array;
balls=newArray();
用一个for轮回来将500个水珠放到数组中:
for(vari:int=0;i<count;i++){
varball:pall=newpall();
将水珠定位到水珠的放射口:
ball.x=260;
ball.y=200;
在x轴偏向也设一个速率向量,使水珠在x轴的必定局限内,并将这个速率向量存到每一个水珠的自界说属性vx中:
ball["vx"]=Math.random()*2-1;
上面是y轴偏向的速率向量,将它存在自界说属性vy中:
ball["vy"]=Math.random()*-10-10;
将水珠放到舞台上,并存到数组中:
addChild(ball);
balls.push(ball);
接上去侦听ENTER_FRAME事务,完成喷泉效果:
addEventListener(Event.ENTER_FRAME,onEnterFrame);
onEnterFrame函数内容:
经由过程一个for轮回为数组中的水珠加上各个速率向量:
for(vari:Number=0;i<balls.length;i++){
varball:pall=pall(balls);
首选在放射速率向量上加上重力速率向量,如许每帧的工夫就会加一次重力,而放射力却没变,如许重力就会渐渐凌驾放射力面使水珠下跌:
ball["vy"]+=zl;
将x,y轴速率向量加到水珠上:
ball.x+=ball["vx"];
ball.y+=ball["vy"];
接上去的是看水珠是不是超越了舞台,假如超越了舞台,则将水珠从头定位到放射口,并将速率向量设为初始形态。
if(ball.x-ball.width/2>stage.stageWidth||
ball.x+ball.width/2<0||
ball.y-ball.width/2>stage.stageHeight||
ball.y+ball.width/2<0){
ball.x=260;
ball.y=200;
ball["vx"]=Math.random()*2-1;
ball["vy"]=Math.random()*-10-10;
完全代码:
varcount:int=500;varzl:Number=0.5;
varballs:Array;
balls=newArray();
for(vari:int=0;i<count;i++){
varball:pall=newpall();
ball.x=260;
ball.y=200;
ball["vx"]=Math.random()*2-1;
ball["vy"]=Math.random()*-10-10;
addChild(ball);
balls.push(ball);
}
addEventListener(Event.ENTER_FRAME,onEnterFrame);
functiononEnterFrame(event:Event):void{
for(vari:Number=0;i<balls.length;i++){
varball:pall=pall(balls);
ball["vy"]+=zl;
ball.x+=ball["vx"];
ball.y+=ball["vy"];
if(ball.x-ball.width/2>stage.stageWidth||
ball.x+ball.width/2<0||
ball.y-ball.width/2>stage.stageHeight||
ball.y+ball.width/2<0){
ball.x=260;
ball.y=200;
ball["vx"]=Math.random()*2-1;
ball["vy"]=Math.random()*-10-10;
}
}
}
用flash动画制作软件制作的动画文件很小,这样便于在互联网上传输,而且它采用了流技术,只要下载一部分,就能欣赏动画,而且能一边播放一边传输送数据。 |