![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Sep 2001
Адрес: Россия, Москва
Сообщений: 67
|
Подскажите пожалуйста, запутался...
Если я в родительской SWF подгружаю дочернюю SWF вызывая Loader.load(new URLRequest(url:String), null), то у меня SWF-ки будут в разных доменах? И соответственно с разными наборами определений классов. А как это влияет на статические члены классов? Т.е. обращение к ним из дочерней и родительской - различны? Вроде бы, раз домены различны, то и классы могут быть описаны по-разному. С другой стороны - вижу, что доступ одинаков (правда и класс со статикой тоже один и тот же в обоих SWF). В документации не нашел ничего по этому поводу пока... Добавлено через 17 часов 49 минут Нашел. Тему можно похерить |
|
|||||
|
http://help.adobe.com/ru_RU/as3/dev/...1d8f-8000.html
Если загружать как Вы, все классы остаются в своем домене и это значит, что они никак не перемешиваются с SWF, которой вы загружаете. ("родительская" и "дочерняя" тут совсем не к месту). Чтобы достать статические члены и функции, нужно будет поступать точно так же, как и не статическими классами. Т.е., сначала достать класс через getDefintionName() и потом обращаться как CLASS.staticFunction() или CLASS.staticMember |
|
|||||
|
Регистрация: Sep 2001
Адрес: Россия, Москва
Сообщений: 67
|
Я ошибся, полагая, что Loader.load(new URLRequest(url:String), null) - это самостоятельные домены для каждой загруженной. На самом деле - так, но с учетом того, что родительский домен будет соответствовать домену родительской SWF.
Т.е. это тоже самое что 1. Loader.load(new URLRequest(url:String), new LoaderContext(false, new ApplicationDomain(ApplicationDomain.currentDomain))) Это как раз тот случай, про который вы говорите. Дочерняя SWF получит доступ к классам родительской через getDefintionName(). А если я определяю класс и там и там, то будет использоваться родительский в дочерней SWF. Поэтому статика и работает. А полностью самостоятельный домен для дочерней SWF - это: 2. Loader.load(new URLRequest(url:String), new LoaderContext(false, new ApplicationDomain())) А вот тут через getDefintionName() не добраться. Ну и соответственно в общий домен, это: 3. Loader.load(new URLRequest(url:String), new LoaderContext(false, ApplicationDomain.currentDomain)) Но странно! В случае 1 память освобождается от определений классов, а вот в случае 2 (отдельный домен без родителя) - судя по мониторингу - нет! Почему же?! Отдельный же домен вообще. |
|
|||||
|
Регистрация: Sep 2001
Адрес: Россия, Москва
Сообщений: 67
|
Хм. Так вы там сравниваете варианты 1 и 3, которые у меня.
Почему у 3 не выгружается - вроде бы ясно. Почему у 1 выгружается - тоже Но почему у 2 - не выгружается?! Это же совсем изолированный вариант! Добавлено через 35 секунд Перечитаю еще раз, может я не понял... |
![]() |
![]() |
Часовой пояс GMT +4, время: 12:15. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|