![]() |
Скопировать LoaderInfo
Здравствуйте.
В моем проекте требуется загружать много файлов, я делаю это с помощью класса Loader. Я сделал 2 режима загрузки: последовательный и параллельный. При последовательной загрузке, решил я, не нужно много загрузчиков, можно после загрузки каждого файла помещать его в специальный массив, и загружать следующий файл тем же загрузчиком, что и попытался сделать. Добавление загруженных данных в массив выглядит следующим образом: Код AS3:
В массив, соответственно, добавляется не само содержимое, а ссылка на объект LoaderInfo загрузчика, т.к., кроме картинок я загружаю еще и другую флешку, из которой затем извлекаю классы через applicationDomain. И тут я столкнулся с закономерной проблемой: поскольку в массиве хранится именно ссылка, а не сам объект, при загрузке нового файла, к старому обратиться уже не получится. Подскажите, можно ли как-нибудь скопировать LoaderInfo загрузчика, чтобы при загрузке следующего файла сохраненная ссылка оставалась действительной? Пробовал полное копирование объекта в виде Код AS3:
Код AS3:
Код:
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".Код AS3:
Код:
ReferenceError: Error #1065: Переменная MainLoader не определена.Есть, конечно, простой вариант - использовать много загрузчиков для множества файлов и при последовательной загрузке, но он кажется мне неправильным, ведь в каждый момент времени всё= будет использоваться только 1. |
Хм... а почему бы не создавать каждый раз новый объект и записывать уже его в массив?
допустим: Код AS3:
|
Пробовал по-разному, всё никак. Например, Ваш пример выдает
Код:
TypeError: Error #1034: Ошибка типа Coercion: невозможно преобразовать flash.display::LoaderInfo@292860d1 в flash.display.Loader.Код AS3:
Код:
TypeError: Error #1034: Ошибка типа Coercion: невозможно преобразовать busy@2ab040f9 в flash.display.Loader. |
Ну конечно же! Садовая моя голова :) событие то отсылает loaderInfo... так что код должен быть -
Код AS3:
|
Благодарю, но тоже не совсем то, что хотелось бы. Здесь ведь флешка загружается и из нее нужно извлечь классы, что делается через LoaderInfo -> ApplicationDomain, т.е. в массиве нужно хранить не content, а сам LoaderInfo. Попытка получить свойство loaderInfo контента, вот такая:
Код AS3:
Код:
ReferenceError: Error #1065: Переменная MainLoader не определена.Код AS3:
|
Могу порекомендовать на сайте адоба посмотреть описание ApplicationDomain, там внизу есть пример - как раз под ваш случай :) Т.е. не использовать один Loader для всех файлов, а для каждого создать отдельный класс - и по требованию дергать нужный класс из загруженного объекта.
Ну или попробовать записывать в массив объекты, возвращаемые методом contentLoaderInfo класса Loader. |
Цитата:
|
Я этим загрузчиком загружаю еще и картинки.
Попробую флешку грузить отдельным классом, а картинки - по методу, предложенному в сообщении №4 |
Loader - это транспортный уровень. Что он загрузит для уровня стоящего над ним, так и будет трактоваться. Если транспорт доставил для объекта Image картинку, то в Image знают, что c ней делать. А ResourceManager'у от лоадера будет нужен только ApplicationDomain из его LoaderInfo.
|
См. мое сообщение под номером 5 в этой теме. Я хотел использовать свой класс, внутри которого есть Лоадеры, для загрузки разных типов файлов, помещая загруженное в массив contents этого класса, откуда его потом можно было бы забирать. Но от флешки мне нужны были встроенные классы, а извлечь их, загружая ее таким путем, не удалось
|
| Часовой пояс GMT +4, время: 11:39. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.