Коллеги, изучив поиск по данному вопросу, не нашел однозначного решения.
Прошу извинить мои неизящные размышления, я выходец из AS2, переход не дается так просто...
Приведу простой пример. Есть некоторый класс Engine, в котором через функцию placeBullet создается экземпляр класса Bullet и добавляется на сцену. И далее, я хочу через Enter Frame двигать этот экземпляр. Важно, что экземпляров одновременно может быть несколько.

Код AS3:
private function placeBullet (mc:Object)
{
var bullet:Bullet = new Bullet();
addChild(bullet);
bullet.x = mc.x;
bullet.y = mc.y;
//
bullet.addEventListener(Event.ENTER_FRAME, moveBullet);
}
Далее я создаю функцию moveBullet:

Код AS3:
private function moveBullet(event:Event)
{
}
... и понимаю, что не могу обратиться напрямую к экземпляру bullet, т.к. он создан внутри функции placeBullet и не виден снаружи. Если же его выносить наружу, то невозможно создать несколько одновременных экземпляров - предыдущий будет удаляться.
Т.е. мне бы хотелось иметь возможность сделать что-то похожее на это:

Код AS3:
bullet.addEventListener(Event.ENTER_FRAME, moveBullet(bullet));
И это только пол-беды. Двигать пулю мне бы хотелось в направлении, равном

Код AS3:
mc.rotation
Соответственно, хотелось бы иметь следующую картину:

Код AS3:
private function placeBullet (mc:Object)
{
var bullet:Bullet = new Bullet();
addChild(bullet);
bullet.x = mc.x;
bullet.y = mc.y;
//
bullet.addEventListener(Event.ENTER_FRAME, moveBullet(bullet, mc.rotation));
}
//
private function moveBullet(event:Event, mc:Object, angle:Number)
{
mc.x += speed*Math.cos(angle);
mc.y += speed*Math.sin(angle);
}
Понятно, что моего решения не существует... Интересует выход из данной ситуации, что посоветуете?