Есть класс Ball, с помощью которого можно создать шарик.

Код AS3:
package objects
{
import flash.display.Sprite;
public class Ball extends Sprite
{
private var d:int = 3;
private var speed:int;
public var move:Function;
public function Ball()
{
var color:Number = 0xFFFFFF * Math.random();
speed = (Math.random() > 0.5) ? 10 : -10;
graphics.beginFill(color);
graphics.drawCircle(d, d, d);
move = (Math.random() > 0.5) ? moveX : moveY;
}
public function setRandomPosition():void
{
x = Math.random() * (stage.stageWidth - width);
y = Math.random() * (stage.stageHeight - height);
}
public function moveX():void
{
x += speed;
if (x >= stage.stageWidth - width || x < 0)
{
speed *= -1;
}
}
public function moveY():void
{
y += speed;
if (y >= stage.stageHeight - height || y < 0)
{
speed *= -1;
}
}
}
}
Нужно сделать так чтоб на сцену добавлялись шарики каждые 3 секунды пока их не станет 20 шт. Идея такая но это не работает. А еще нужно чтобы двигались все шарики а не только последний. Как это сделать?

Код AS3:
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.utils.getTimer;
import objects.Ball;
public class Main extends Sprite
{
private var balls:Array;
private var ball:Ball;
public function Main()
{
balls = new Array();
addEventListener(Event.ENTER_FRAME, onLoop);
}
private function onLoop(evt:Event):void
{
addBall();
ball.move();
}
private function addBall():void
{
var a:Number = getTimer();
if (balls.length < 20 && (getTimer()-a)>=3000)
{
ball = new Ball();
addChild(ball);
ball.setRandomPosition();
balls.push(ball);
}
}
}
}