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

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Попытаюсь порассуждать.
Лоадер никуда не денется и GC не может его удалить. Bitmap, как DisplayObject, имеет ссылку на LoaderInfo, который содержит ссылку на Loader.
Код AS3:
trace(e.target.loader == e.target.loader.content.loaderInfo.loader); // true
Если загружать свф, то у всех его визуальных объектов будет ссылка на loaderInfo и, соответственно, loader.
Т.о. пока существует хоть один визуальный объект, загруженный через данный Loader, экземпляр этого лоадера не будет уничтожен.

Добавлено через 18 минут
Не. Даже не так )

Пока существует ссылка на ApplicationDomain, в который лоадер загрузил классы, то будет существовать и сам лоадер. О, как! Кстати, так как картинка является экземпляром Bitmap класса без имени, то "выдернуть" ее класс непосредственно из ApplicationDomain и сделать еще один экземпляр не представляется возможным. Но это можно сделать через ссылку на конструктор BitmapData.

В своих экспериментах с байткодом я загружал картинку, оборачивал ее бинарные данные в именованный класс и, вуаля! Имеем картинку, которую можно в любой момент инстанцировать по ApplicationDomain#getDefinition().

Добавлено через 1 час 22 минуты
Если будет существовать корневой объект (ссылка DisplayObject#root указывает на него), то можно получить ссылки на loaderInfo и его loader. Для загруженных через Loader изображений корневым объектом является сам Bitmap. Опять же это говорит в пользу того, что loader не уничтожается.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.


Последний раз редактировалось dimarik; 27.01.2011 в 11:58.