AS3 Вставить доступ к дочерним видеоклипам - PullRequest
2 голосов
/ 11 сентября 2011

Так что я использую этот код для встраивания моего .swf файла.Я создаю классы для каждого ресурса в моей библиотеке.

[Embed('assets/assets.swf', symbol='game.menu.levels')]
public static const LEVELS_MENU:Class;

Работает просто отлично, но как я могу получить доступ к дочернему элементу на несколько глубин вниз?

Пока у меня есть это:

this.object = new R.LEVELS_MENU();
var child_element:MovieClip = 
    this.object.getChildByName("child_element") as MovieClip;

Есть ли лучшеспособ сделать это:

var child_child_element:DisplayObjectContainer = 
        DisplayObjectContainer(
                child_element.getChildByName("child_child_element")
        );
var child_child_child_element:DisplayObjectContainer = 
        DisplayObjectContainer(
                child_child_element.getChildByName("child_child_child_element")
        );

Есть ли способ, которым я мог бы сделать это с синтаксисом точки как таковой:

child_element.child_child_element.child_child_child_element...

Ответы [ 2 ]

2 голосов
/ 11 сентября 2011

Не настолько, насколько я знаю.

Возможно, есть обходной путь.

Если вы создали этих детей из Flash IDE, вы сможете получить к ним прямой доступ по следующим ссылкам:

MovieClip(this.object).child1.child2.child3.child4;

Или, если вы выполняете инициализацию MovieClip вручную (новый оператор) внутри SWF-файла, вы также можете создать эти ссылки вручную следующим образом:

child["child_child_name"] = child_child;

Хотя для мувиклипов это не имеет значения, поскольку они динамические, вы можете просто сделать:

child.child_child_name = child_child;

Последние два находятся внутри кода .swf;

1 голос
/ 12 сентября 2011

Если ваш основной документ Class объявляет экземпляры (т. Е. «Объявлять этапы автоматически» отключен, то просто приведите SWF к классу документа.

Итак,

var yourSwf:YourSwf = new LEVELS_MENU() as YourSwf;
var mc = yourSwf.child1;

Youвероятно, следует рассмотреть возможность предоставления интерфейса вашему классу основного документа, чтобы другим классам не нужно было знать, что это именно YourSwf. Для примера посмотрите http://flexdiary.blogspot.com/2009/01/example-of-casting-contets-of-swfloader.html.

Обратите внимание, чтовы настраиваете себя на мир зла, используя статический класс, в котором классы связаны с ним для предоставления собственных зависимостей. По крайней мере, рассмотрите возможность перехода к шаблону абстрактной фабрики (http://www.as3dp.com/2009/01/25/actionscript-30-abstract-factory-design-pattern-multiple-products-and-factories/)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...