模拟喷泉粒子

来源:互联网 发布:网络教育报名费 编辑:程序博客网 时间:2024/04/27 23:51
package {    import flash.display.Sprite;    public class Ball extends Sprite    {        public var radius:Number;        public var color:uint;        public var vx:Number=0;        public var vy:Number=0;        public function Ball (radius:Number,color:uint)        {            this.radius=radius;            this.color=color;            Init ();        }        public function Init ():void        {            graphics.beginFill (color);            graphics.drawCircle (0,0,radius);            graphics.endFill ();        }    }}
package {    import flash.events.Event;    import flash.display.Sprite;    import flash.display.StageAlign;    import flash.display.StageScaleMode;    public class Fountain extends Sprite    {        private var count:int=300;        private var gravity:Number=0.5;        private var balls:Array;        public function Fountain ()        {            Init ();        }        public function Init ():void        {            stage.scaleMode=StageScaleMode.NO_SCALE;            stage.align=StageAlign.TOP_LEFT;            balls=new Array();            for (var i:int=0; i<count; i++)            {                var ball:Ball=new Ball(2,Math.random() * 0xffffff);                InitPosition(ball);                InitSpeed (ball);                addChild (ball);                balls.push (ball);            }            addEventListener (Event.ENTER_FRAME,Active);        }        private function Active (e:Event):void        {            for (var i:int =0; i<balls.length; i++)            {                var ball:Ball=Ball(balls[i]);//var ball:Ball=balls[i];也可以                ball.vy+=gravity;                ball.x+=ball.vx;                ball.y+=ball.vy;               //边界再生                if (ball.x-ball.radius>stage.stageWidth ||                     ball.x+ball.radius<0 ||                    ball.y-ball.radius>stage.stageHeight ||                     ball.y+ball.radius<0)                 {                    InitPosition(ball);                    InitSpeed (ball);                 }            }        }        private function InitPosition(ball:Ball):void        {            ball.x=stage.stageWidth/2;            ball.y=stage.stageHeight;        }        private function InitSpeed (ball:Ball):void        {            ball.vx=Math.random() *6-3;            ball.vy=(-10)*Math.random() -10;        }    }}


原创粉丝点击