![]() |
|
||||||||||
|
|||||
|
Регистрация: 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. |
|
|||||
|
Регистрация: 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) {} |
|
|||||
|
Регистрация: Jul 2009
Сообщений: 95
|
Ну тогда скажи мне, мой друг, как это мне остановить цикл что бы потом продолжить? и что бы не вставлять костыли?!
Добавлено через 1 минуту может есть все-таки какой-нибудь метод типа Stage.invalidate() (заставляет всю сцену перерисоваться) который заставляет диспетчеризатор просканировать все сообщения? я бы его в цикле вызвал... |
|
|||||
|
Регистрация: Jan 2009
Сообщений: 1,651
|
да убираешь нахрен свой цикл, вместо него делаешь переменную-флаг и проверку на enterFrame.
Нужно использовать принцип аналогичный такому: Простой цикл, подвешивает флешку public function some ():void {
for (var i:Number = 0; i<9999999999; i++){
//безумные вычисления тут
}
}
private var i:Number;
public function some ():void {
this.addEventListener (Event.ENTER_FRAME,efHr);
i=0;
}
private function efHr (e:Event):void {
var j:Number = 0;
for (j=0; j<10000 && i<9999999999; i++,j++){//выполняем только 10000 действий в кадр из 9999999999, чтобы не подвесить флешку
//безумные вичисления
}
if (i==9999999999) { //вычисления закончены
this.removeEventListener (Event.ENTER_FRAME,efHr);
}
}
__________________
мой пустой блог |
![]() |
![]() |
Часовой пояс GMT +4, время: 16:20. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|