Я загружаю swf через класс Loader(). Когда swf загружается, я просматриваю все дочерние элементы root и удаляю любой TextField с помощью removeChild(). Сначала это работает - TextField удаляется. Но, как анимация в загруженных swf-финишках и циклах, удаленный TextField как-то снова появляется. TextField - это динамический текст. Если я удалю StaticText, это будет удалено. Что здесь происходит?AS3/CS4 удалено TextField снова после окончания анимации
loopChildren(root);
function loopChildren(dispObj:*):void {
for (var i:int = 0; i< dispObj.numChildren; i++) {
var obj:DisplayObject = dispObj.getChildAt(i);
if (obj is DisplayObjectContainer) {
loopChildren(obj);
}
else {
if (obj is TextField) {
obj.parent.removeChild(obj);
i--;
}
}
}
}
Если я позвоню loopChildren с таймером (5 сек Intervall) и следа (obj.name) для всех детей, я заметил, что изменения obj.name. TextField называется instance11, instance32, instance54 и так далее. Кажется, что новый экземпляр создается и добавляется непрерывно?
EDIT: Если я передам код непосредственно в swf и запускаю его без использования обертки, он работает так, как ожидалось. Мне нужно упустить что-то, что происходит, когда оно загружается через другой фильм?
EDIT2: Я должен сказать, что TextField, который я пытаюсь удалить, находится в отдельном слое на той же временной линии, что и анимация. Если я поместил анимацию в свою временную шкалу, она, похоже, будет работать так, как ожидалось. Но не может ли динамический текст и твин жить вместе?
Я бы заподозрил ключевые кадры анимации ... возможно, они добавляют новый экземпляр текстового поля? – subb