FlashAS3.0实例教程喷泉动画效果

点评:在本教程中,我们将介绍利用速度向量技术和重置对象实现喷泉效果,所谓的载体量的方向。例如,当一辆车从东向西以每小时80公里的速度,我们可以得到这辆车的速度矢量,其中包括两个要素:速度,每小时80公里,从东到西的方向。
现在让我们来分析一下喷泉。




In this tutorial, we will introduce the technique of using speed vector and reset the object to achieve the fountain effect.The so-called vector is the direction of the quantity.For example, when a car runs from east to west at a speed of 80 kilometers per hour, we can get the velocity vector of the car, which includes two elements: speed, 80 kilometers per hour, and direction from east to west.
现在让我们来分析一下喷泉是如何形成的。
喷泉是一个向上喷洒的水滴数量,然后受到重力回到地面。这个过程的速度矢量是什么,具体是什么很容易找到至少两种力,一种是向上喷射水的外力,另一种是使水回到地面的重力。
速度:我把速度力矢量设为随机数,在两个方向上,它必须在y轴上负。
具体方法是:在enter_frame事件的水珠子的Y值添加到10和20之间的随机数。
重力的速度:速度越小,我将它设置为0.5,并且是在Y轴方向的积极价值。它也添加到enter_frame事件,使水降回地面后,喷。
另一个问题是,由于速度向量加到enter_frame事件,水滴会沿着这些速度矢量和远离舞台的举动,而喷泉不知道呢。
为了解决这个问题,有必要将水珠在舞台边界以外的地方重新安置到喷嘴上,从而形成一个不间断的射流。
那么,上述分析效果的产生方法,下面要做的。
第一步是画一滴水。创建一个新的电影编辑元素。用辐射填充椭圆。左边的颜色是白色,透明度为100%,正确的颜色是略带灰色,和透明度50%。在属性面板,椭圆是设置在一个宽度为2像素,和高度为5像素。单击元件库中的权利,打开连接窗口(CS4,打开属性窗口),建立了一类,我是鲍尔。
然后回到主场景,打开框架操作面板,让我们编写代码。
喷泉是由许多水珠构成的。多少钱我已经设置了500:
var计数:int = 500;
重力速度矢量:
VaR ZL:数量= 0.5;
把500个水珠子放进一个数组里:
var球:数组;
新数组();
使用for循环将500个水珠放入阵列中:
对于(var i:int = 0;i <计数;i + +){
var球=新的帕尔();
水滴位于水的喷水口。
球,x=260;
球,y=200;
一个速度矢量也设置在X轴,使液滴在一定范围内的X轴,和速度向量存储在每个珠的自定义属性vx。
球{VX} =(数学。随机)* 2 - 1;
以下是在Y轴方向的速度矢量,并有一个自定义属性的人:
球{VY} = Math.random()* - 10 - 10;
把水放在舞台上,并在阵列中共存。
addChild(球);
Balls.push(球);
接下来,听enter_frame事件实现喷泉效果。
AddEventListener(event.enter_frame,onEnterFrame);
在每一帧功能的内容:
阵列中的水滴通过一个for循环被添加到每个速度矢量中。
对于(var i:数量= 0;i < balls.length;i++){
乏球:鲍尔=鲍尔(球);
首先将重力速度矢量加到射流速度矢量中,使每帧的时间增加一次,但射流力不会改变,重力将逐渐超过射流力面,水滴也会下降。
球{VY} = ZL;
将x,y轴速度矢量添加到水中。
球球。x + = {VX};
球球。Y = {VY};
下一步是看水滴是否超过了舞台。如果我们超出了阶段,我们将重新定位水滴到喷雾端口,并设置速度矢量作为初始状态。
如果(球。X球。宽度 / 2 > stage.stagewidth | |
球。x +球。宽度 / 2<0 | |
球球。Y。宽度 / 2 > stage.stageheight | |
球。y +球。宽度 2 < 0){
球,x=260;
球,y=200;
球{VX} =(数学。随机)* 2 - 1;
球{VY} = Math.random()* - 10 - 10;
完整的代码:VAR计数:int = 500;var ZL:数量= 0.5;
var球:数组;
新数组();
对于(var i:int = 0;i <计数;i + +){
var球=新的帕尔();
球,x=260;
球,y=200;
球{VX} =(数学。随机)* 2 - 1;
球{VY} = Math.random()* - 10 - 10;
addChild(球);
Balls.push(球);
}
AddEventListener(event.enter_frame,onEnterFrame);
函数onEnterFrame(事件:事件:void){
对于(var i:数量= 0;i < balls.length;i++){
var球:鲍尔=鲍尔(球{ });
球{VY} = ZL;
球球。x + = {VX};
球球。Y = {VY};
如果(球。X球。宽度 / 2 > stage.stagewidth | |
球。x +球。宽度 / 2<0 | |
球球。Y。宽度 / 2 > stage.stageheight | |
球。y +球。宽度 2 < 0){
球,x=260;
球,y=200;
球{VX} =(数学。随机)* 2 - 1;
球{VY} = Math.random()* - 10 - 10;
}
}
}