У меня есть простой документ Flash с одним прямоугольником на сцене.Я сделал прямоугольник символом MovieClip и установил имя его экземпляра в «test_symbol_name».Я опубликовал этот документ в .swf.(Вот .fla и .swf )
В проекте AS3 Flash Builder я загружаю SWF-файл с загрузчиком, а затем отслеживаю все в его списке отображения с помощью этогоfunction:
public static function traceDisplayList(container:DisplayObjectContainer, indentString:String = "->"):void {
var child:DisplayObject;
for (var i:uint=0; i < container.numChildren; i++) {
child = container.getChildAt(i);
trace(indentString, child.parent.name + " " + indentString + " " + child.name);
if (container.getChildAt(i) is DisplayObjectContainer) {
traceDisplayList(DisplayObjectContainer(child), indentString + "->");
}
}
}
Вот вывод:
-> instance471 -> instance472
->-> instance472 ->-> instance473
->-> instance472 ->-> test_symbol_name
->->-> test_symbol_name ->->-> instance474
Мой символ стал вложенным в instance472, который находится внутри instance471.
Я могу получить символ в кодеуказав содержащий символ (472), например:
var myTestSymbol:MovieClip = (loader.getChildByName('instance472') as DisplayObjectContainer).getChildByName('test_symbol_name') as MovieClip;
Вот мои вопросы
Что такое instance472 и instance471?Это документ и сцена или что-то еще?
Когда я публикую swf, номер экземпляра может измениться.Я должен изменить свой код в соответствии с последним номером, чтобы заставить его работать.Как я могу назвать instance471?
Это правильный подход или есть лучший способ добраться до моего экземпляра символа?