![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Jul 2009
Сообщений: 95
|
Имеется не рабочий код
private static function getResource(resName:String):Object { var fileName:String = GameConfig.getCfgAttribute(resName, "file"); var request:URLRequest = new URLRequest("./static data/" + fileName); var loader:Loader = new Loader(); loader.load(request); return loader.content; } Отсюда у меня два вопроса: 1. Можно ли в данном методе не выходя из него повесить обработчик и как-то в цикле ожидать его вызова?(в цикле в таком случае, нужно вызывать скорее всего какой-то метод для системы событийю. поскольку в противном случае флешка тупо зависнет) 2. Можно ли как-то это дело загрузить без обработчиков? Добавлено через 8 минут ау!!! |
|
|||||
|
Я бы делал подгрузку zip архивов/swf с ресурсами - из них можно будет сразу получить ресурс.
Ну или getResource может возвращать какую-то обёртку над ресурсом, которая подгружает сам ресурс и сообщает об окончании загрузки. Мне тоже интересно как делают в реальных проектах (:
__________________
while(1) {} Последний раз редактировалось Division; 25.03.2010 в 17:49. |
|
|||||
|
Цитата:
tofflife, забудь о синхронности. Тем более когда работаешь с файлами.
__________________
if (love is true) break my.heart; |
|
|||||
|
.
|
Могу предположить )
Менеджер ресурсов. Организует потоки загрузки, использует приоритеты загрузки, отдает обертки ресурсов, в т.ч. локаль-зависимые, управляет временем жизни ресурса, содержит карту [id ресурса] => [URI ресуса]. Загрузку запрошенного ресурса делегирует той или иной службе. Для доставки ресурса служба использует любой транспорт передачи данных, поддерживаемый ActionScript: file, socket, http, local connection, external interface, shared object. Как приложение взаимодействует с Менеджером ресурсов? Менеджер ресурсов - единственный экземпляр. Как будете обращаться к нему обращаться - дело вкуса. Приложение запрашивает ресурс по идентификатору, получает обертку. Если обертка содержит ресурс, то приложение извлекает ресурс. Если ресурса еще нет - подписывается на Event.COMPLETE. С этих пор классы работы с потоками контента: Loader, URLStream, URLLoader и пр. перечисленные выше находятся вне закона и используются исключительно классами служб. Конечно, нужно четко разделять контент и данные. Наш ResourceManager только для контента. В этом ракурсе библиотека классов - контент. А массив значений счета в игре в SO остается данными. Плюсы использования менеджера 1) Сокращение кода. Код написан один раз во фреймворке. Больше нет портянок. Остается компактный var rw:ResourceWrapper = resourceManager.getResource(resourceId, locale):ResourceWrapper; if ( !rw.ready ) { rw.addEventListener(ResourceEvent.READY, handler_ready); } else { var font:Font = Font( rw.getResource(resourceId) ); Font.registerFont(font); } 3) Локаль. Она самая. Все ресурсы привязаны к локали. 4) Управление очередью и приоритетами загрузки. Теперь библиотеки классов приложения загружаются раньше GUI, а еще невидимые персонажи позже присутствующих во вьюпорте. 5) Управляемая выгрузка неиспользуемых ресурсов. 6) Единый учет трафика в случае сетевых соединений. Не так гладко с этим, если ресурс кеширован браузером. 7) Может чего-то упустил. Минусы 1) Запарка с картой ресурсов. Необходимо ее как-то и кем-то генерировать. Как вариант - автоматизированно серверной частью. Как раз будет синхронизировано с описанием моделей, отдаваемыми сервером и которым понадобятся эти ресурсы. На худой конец внешний статичный файл. 2) Придется придерживаться конвы загрузки через ResourceManager. 3) Может чего-то упустил. Последний раз редактировалось dimarik; 25.03.2010 в 20:07. |
|
|||||
|
Регистрация: Jul 2009
Сообщений: 95
|
вот и я смотрю, что придется делать контейнер для loader`a... Что-то типа контрола DynamicImage
|
|
|||||
|
Регистрация: Jan 2009
Сообщений: 1,651
|
что тут непонятного? Сначала вешаем на экран картинку а-ля "грузимся". Потом создаем загрузчики, вешаем на них события. Для каждого загрузчика увеличиваем счетчик на 1. На каждый complete уменьшаем счётчик на один. Когда счётчик обнуляется убираем мувик "грузимся" - загрузка окончена.
Без обработчиков загрузить можно =) Только вы не узнаете о том что данные загрузились =)
__________________
мой пустой блог |
|
|||||
|
Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
|
Лучше загружайте сначала массив с названиями файлов которые загружаете , и создайте метод класса complete который будет принимать событие Event.COMPLETE и вызывать ваш метод getResource(arrayRes[iter++]);
|
|
|||||
|
Регистрация: Jul 2009
Сообщений: 95
|
to iflamberg
Проблема состоит в том, что ресурсы в данном участке кода должны загружаться "на лету". Добавлено через 1 минуту это уже нереально. у меня архитектура сделана не так. У меня происходит парсирование XML, внутри которого подгружается динамически виртуальная фабрика, в которую в цикле передаются атрибуты из тего для создания определённого контрола. Это все не может просто вот так взять и остановиться( Не ужели разработчики adobe не придумали синхронный вариант загрузки? |
|
|||||
|
Цитата:
Если разделить ресурсы на небольшие группы, можно при необходимости подгружать их сразу пачками в менеджер ресурсов, а сам менеджер будет их отдавать уже синхронно. Хотя вариант с обёрткой мне даже больше нравится.
__________________
while(1) {} |
![]() |
![]() |
Часовой пояс GMT +4, время: 14:57. |
|
|
« Предыдущая тема | Следующая тема » |
|
|