package game { import flash.display.Stage; import flash.events.Event; import flash.geom.Rectangle; public class BallGame { protected var _stage:Stage; protected var _container:Rectangle; protected var _balls:Array; protected var _ballManager:BallManager; public function BallGame( stage:Stage, width:Number = 500, height:Number = 300 ) { _stage = stage; _container = new Rectangle( 0, 0, width, height ); _balls = new Array(); _ballManager = new BallManager( this ); } /** * return a clone of the container rect */ public function get container():Rectangle { return _container.clone(); } /** * return a clone of the array of balls */ public function get balls():Array { var arr:Array = new Array(); while (arr.length < _balls.length) { arr[arr.length] = _balls[arr.length]; } return arr; } /** * Start the game and instantiate all the balls in the game */ public function startGame():void { while( _balls.length < 10 ) { var ball:Ball = new Ball(); var a:Number = Math.random() * Math.PI * 2; var speed:Number = 5 + Math.random() * 5; ball.radius = 5 + Math.random() * 10; ball.x = _container.x + _container.width / 4 + Math.random() * _container.width / 2; ball.y = _container.y + _container.height / 4 + Math.random() * _container.height / 2; ball.velX = Math.cos(a); ball.velY = Math.sin(a); ball.speed = speed; _balls.push(ball); } _stage.addEventListener( Event.ENTER_FRAME, update, false, 0, true); } /** * Tell the ballManager to update */ protected function update(e:Event):void { _ballManager.update(); } } }