package { import flash.display.Sprite; import flash.events.TimerEvent; import flash.utils.Timer; [SWF(width="330", height="330", backgroundColor="#FFFFFF", frameRate="20")] public class DiscoGrid extends Sprite { private var radius:int = 16; private var padding:int = 5; private var gridSize:int = 10; private var timer:Timer; private var foregroundSprite:Sprite; private var framesPerSecond:int = 8; public function DiscoGrid() { graphics.clear(); var bg:Sprite = background(); this.addChild(bg); var delay:Number = 1000 / framesPerSecond timer = new Timer(delay); timer.addEventListener(TimerEvent.TIMER, onTimerTick); timer.start(); } private function onTimerTick(event:TimerEvent):void { if(foregroundSprite) { removeChild(foregroundSprite); } foregroundSprite = foreground(); addChild(foregroundSprite); } private function foreground():Sprite { var sprite:Sprite = new Sprite(); var qty:int = 0; for(var i:int = 0; i < gridSize; i++) { for(var j:int = 0; j < gridSize; j++) { qty++; var ball:Ball = new Ball(Math.random() * radius * 1.2); ball.x = radius+padding+(i*radius*2); ball.y = radius+padding+(j*radius*2); ball.draw(); sprite.addChild(ball); } } return sprite; } private function background():Sprite { var sprite:Sprite = new Sprite(); sprite.graphics.beginFill(0xFFFFFF); var dim:int = gridSize * (2*radius) + (2*padding); sprite.graphics.drawRect(0, 0, dim, dim); sprite.graphics.endFill(); return sprite; } } }