模拟喷泉粒子
来源:互联网 发布:网络教育报名费 编辑:程序博客网 时间: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; } }}