Показать сообщение отдельно
Старый 03.07.2014, 18:25
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 6  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Если граф в виде дерева (иерархии) вас не пугает, то всю эту флешовую байду можно спокойно понять. Самый Главный объект -- это Stage. К нему крепится самый первый объект создаваемой swf (загрузчика) это его экземпляр Document class. По сути, когда из любого объекта поддерева, принадлежащего этому Document class, вы обращаетесь к свойству root, оно всегда покажет на экземпляр Document class. Это справедливо и для loaderInfo.url, но, повторюсь, поддерево должно находиться в родственных отношениях к Document class, т.е. должно существовать в его графе.
Теперь представьте, что мы загрузили другую swf. У неё есть свой документ класс. Кстати, это понятие (Document class) не очень официальное и не совсем передает суть. Как так: говорю об экземпляре и одновременно о классе? Скорее оно пошло из Flash IDE, в котором было поле для заполнения названия главного класса, точке входа в приложение. Кстати, именно поэтому у точки входа есть stage в конструкторе, но только у т.н. Stage owner приложения, запускаемого самым первым. Остальные подгружаемые не имеют stage в своем конструкторе. О, вернемся к загрузке. У той swf есть свой экземпляр своего документ класса. Который крепится к графу в точке Stage. Так вот, нода первого экземпляра swf и нода второй swf являются поддеревами их самих. Если из любого визуального объекта, находящегося в этих поддеревах, спросить откуда он был загружен через свойства DisplayObject#loaderInfo#url, то они честно расскажут.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.