package { import flash.display.Sprite; import flash.events.Event; public class Bubbles2 extends Sprite { private var balls:Array; private var numBalls:Number=20; private var bounce:Number=-0.9; private var spring:Number=0.2; private var gravity:Number=1; public function Bubbles2() { init(); } private function init():void { balls = new Array(); for (var i:uint = 0; i < numBalls; i++) { var ball:Ball=new Ball(Math.random()*30+20,Math.random()*0xffffff); ball.x=Math.random()*stage.stageWidth; ball.y=Math.random()*stage.stageHeight; ball.vx=Math.random()*6-3; ball.vy=Math.random()*6-3; addChild(ball); balls.push(ball); } addEventListener(Event.ENTER_FRAME, onEnterFrame); } private function onEnterFrame(event:Event):void { for (var i:uint = 0; i < numBalls - 1; i++) { var ball0:Ball=balls[i]; for (var j:uint = i + 1; j < numBalls; j++) { var ball1:Ball=balls[j]; var dx:Number=ball1.x-ball0.x; var dy:Number=ball1.y-ball0.y; var dist:Number=Math.sqrt(dx*dx+dy*dy); var minDist:Number=ball0.radius+ball1.radius; if (diststage.stageWidth) { ball.x=stage.stageWidth-ball.radius; ball.vx*=bounce; } else if (ball.x - ball.radius < 0) { ball.x=ball.radius; ball.vx*=bounce; } if (ball.y+ball.radius>stage.stageHeight) { ball.y=stage.stageHeight-ball.radius; ball.vy*=bounce; } else if (ball.y - ball.radius < 0) { ball.y=ball.radius; ball.vy*=bounce; } } } }