Вот вам пример из хелпа, с передачей параметров в функцию (может, потом пригодится)

Код AS3:
package {
import flash.display.Sprite;
import flash.utils.*;
public class SetTimeoutExample extends Sprite {
private var delay:Number = 1000; // delay before calling myDelayedFunction
public function SetTimeoutExample() {
var intervalId:uint = setTimeout(myDelayedFunction, delay, "Hello", "World");
}
public function myDelayedFunction():void {
trace(arguments[0] + " " + arguments[1]);
}
}
}
Применительно к вашему коду:

Код AS3:
addEventListener(Event.ENTER_FRAME,enterFrameListener);
нужно делать в функции beginTimer, иначе сразу начнет отрабатываться ENTER_FRAME.

Код AS3:
// делаем первую фигуру и запускаем ее анимацию
figure1:MyRectangle=new MyRectangle();
addChild(figure1);
figure1.addEventListener(Event.ENTER_FRAME,enterFrameListener);
// делаем вторую фигуру, но пока не анимируем.
figure2:MyRectangle=new MyRectangle();
addChild(figure2);
//запуск setTimerout
var intervalId:uint = setTimeout(beginTimer,1000);
function beginTimer():void{
//подписываем вторую фигуру на ENTER_FRAME - запускаем анимацию
figure2.addEventListener(Event.ENTER_FRAME,enterFrameListener);
}
function enterFrameListener(e:Event):void{
//часть кода, которая будет двигать прямоугольник по горизонтали
}
соответственно в хэндлере enterFrameListener доступ к объекту для его анимации делаете через e.target, чтобы анимировался именно нужный объект.
setTimeout удобен только в случае, если нужен одноразовый делэй, в остальных лучше пользоваться таймером, ну или твинерами, как было сказано выше.