Есть мувиклип Tw1, содержащий моушн-твин.
К нему привязан класс Tw1, через галочку Export to ActionScript.
Необходимо вывести его на стэйдж и проиграть определенное количество раз, а затем остановить.
На первый взгляд вроде бы простая задача, но очевидного решения придумать не удалось.
Поиском по форуму нашел вот
этот пост, в котором есть похожие мотивы.
В результате получился такой код:

Код AS3:
package
{
import flash.display.*;
import flash.events.*;
import flash.text.*;
public class Main extends Sprite
{
private var tw1:Tw1;
private var txt1:TextField;
private var playCounter:uint = 1;
public function Main()
{
//--- Выводим мувиклип ---//
tw1 = new Tw1();
tw1.x = 100;
tw1.y = 100;
tw1.name = "Instance1";
addChild(tw1);
//--- Выводим счётчик фрэймов ---//
txt1 = new TextField();
txt1.x = 10;
txt1.y = 300;
txt1.autoSize = TextFieldAutoSize.LEFT;
txt1.text = "None";
addChild(txt1);
tw1.addEventListener(Event.ENTER_FRAME, cycleListener);
}
private function cycleListener(e:Event):void
{
txt1.text = e.currentTarget.currentFrame.toString();
if (e.currentTarget.currentFrame == e.currentTarget.totalFrames && playCounter <= 3)
{
playCounter ++;
}
else if (playCounter > 3)
{
tw1.stop();
e.currentTarget.removeEventListener(Event.ENTER_FRAME, cycleListener);
// removeChild(e.currentTarget);
}
}
}
}
Вобщем, всё работает ОК, но есть два вопроса:
1. Есть ли другой способ решить эту задачу? Странно, но похоже на то, что нет.
Ведь обязательно нужно знать момент окончания мувиклипа, а это достигается только условием

Код AS3:
e.currentTarget.currentFrame == e.currentTarget.totalFrames
и вроде бы никак иначе.
Выходит, никакими там комбинациями методов stop(); gotoAndStop(); play(); и т.п. это сделать нельзя.
2. Не понимаю, почему не работает строка:

Код AS3:
// removeChild(e.currentTarget);
если ёё раскомментировать, то будет получена ошибка:
Цитата:
1118: Implicit coercion of a value with static type Object to a possibly unrelated type flash.display: DisplayObject.
removeChild(e.currentTarget);
|
Чего-то чтоли уже не существует, или нужно преобразование типов?