maincode, отлично, большое вам спасибо за готовый код.
Проверил у себя, всё работает.
Практически всё понятно, кроме некоторых деталей:
1. Как определить, что именно должен расширять класс?
Вот у вас

Код AS3:
PlayerMC extends EventDispatcher.
Означает ли это, что если бы я, действуя механически, сделал бы extends Sprite, то...
Кстати, сделал Sprite... думал будет ошибка, но нет - всё работает : )
Я думал может быть в случае Sprite не будут работать addEventListener'ы однако все ОК.
2. Зачем отдельная функция stop(); разве это не вызывает конфликта с системной функцией stop()?
Как я понимаю, должен быть override в таких случаях, же. Но раз работает, значит не должен, хм.
И зачем кстати дублирование идет? То есть идет:

Код AS3:
if (currentCount == totalCount)
{
mc.stop();
mc.removeEventListener(Event.ENTER_FRAME, frameHandler);
}
и:

Код AS3:
public function stop():void
{
mc.removeEventListener(Event.ENTER_FRAME, frameHandler);
mc.stop();
}
В обоих одинаковые ремув-листенеры... зачем так?
В принципе если последнюю функцию закоментировать, то всё работает как и раньше.