Это просто узелок на память, касательно того случая, когда нужно внедрить во Flex swf с таймлайном и проиграть его один раз.
MovieClip, будучи скомпилирован как AS3 для 9 версии плеера, при внедрении во Flex теряет свой код. Это делает невозможным затормозить клип в конце вызовом функции stop(). Описываемый способ управлять клипом, возможно, не самый лучший, но он работает.
Итак, сначала внедряем некоторый символ из SWF, который есть MovieClip.
[Embed(source='/assets/clips.swf',symbol='clip1')]
private var clip_1:Class;
Теперь нужно превратить внеденный клип в экземпляр класса MovieClip:
var my_clip:MovieClip = MovieClip(new clip_1());
Последний кадр клипа делаем ключевым и ставим туда метку "fin". А на экземпляр вешаем слушателя Event.ENTER_FRAME:
my_clip.addEventListener(Event.ENTER_FRAME,checkForStop);
Слушатель проверяет наличие метки и когда нужно останавливает воспроизведение:
private function checkForStop(event:Event):void {
if (event.target.currentLabel == "fin") {
event.target.stop();
}
}Осталось только задать этот клип в качестве значения свойства
source компонента mx:Image.
Разумеется, одной остановкой воспроизведения клипа дело не ограничивается. К примеру, так же можно реализовать плавные переходы между состояниями кнопок, поставив несколько меток на таймлайн, или же организовать библиотеку иконок в рамках одного клипа, не тягая каждую по отдельности.