Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 29.05.2012, 02:06
Sintesis вне форума Посмотреть профиль Отправить личное сообщение для Sintesis Найти все сообщения от Sintesis
  № 1  
Ответить с цитированием
Sintesis
 
Аватар для Sintesis

Регистрация: Jul 2008
Сообщений: 912
По умолчанию Загрузка массива объектов

Подскажите пожалуйста можно ли как-то загрузить массив объектов, например передаём в такую функцию массив с именами:
Код AS3:
public function loadModels(_namesArr:Array):void {
			nameArrLen = _namesArr.length;
 
			for (var i:int; i < nameArrLen; i++){
			   var urlLoader:URLLoader = new URLLoader();
			   urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
			   urlLoader.addEventListener(Event.COMPLETE, onModelComplete);
			   urlLoader.load(new URLRequest("store/models/" + _namesArr[i]));
			}
		}
но в таком случае при прослушивании события onModelComplete можно успеть обратиться только к последнему объекту, да? А как загрузить и сложить в другой массив все объекты имена которых содержатся в _namesArr?
У меня есть одно решение, но оно очень не нравится.


Последний раз редактировалось Sintesis; 29.05.2012 в 02:10.
Старый 29.05.2012, 02:18
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 2  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Нет, не только к последнему можно обратиться, сколько загрузок было, столько раз (если всё ок) onModelComplete вызовется. Я бы советовал сложить эти все URLLoaderы в массив, чтоб можно было определить, какой же файл загрузился (в event есть ссілка на URLLoader, ищем его в массиве и так узнаем номер).
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 29.05.2012, 12:46
Sintesis вне форума Посмотреть профиль Отправить личное сообщение для Sintesis Найти все сообщения от Sintesis
  № 3  
Ответить с цитированием
Sintesis
 
Аватар для Sintesis

Регистрация: Jul 2008
Сообщений: 912
нет что-то не понял.
вот сложил в массив:
Код AS3:
for (var i:int; i < nameArrLen; i++){
			   var urlLoader:URLLoader = new URLLoader();
			   loadArr[i] = urlLoader;
			   urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
			   urlLoader.addEventListener(Event.COMPLETE, onModelComplete);
			   urlLoader.load(new URLRequest("store/models/" + _namesArr[i]));
 
			}
дальше слушаем onModelComplete и что?
Код AS3:
private function onModelComplete(_event:Event):void {
 
		}
кое что получается если в onModelComplete обращаться к loadArr[i].data но что-то здесь не то или мне так кажется только


Последний раз редактировалось Sintesis; 29.05.2012 в 12:59.
Старый 29.05.2012, 12:59
DaFive вне форума Посмотреть профиль Отправить личное сообщение для DaFive Посетить домашнюю страницу DaFive Найти все сообщения от DaFive
  № 4  
Ответить с цитированием
DaFive
 
Аватар для DaFive

Регистрация: May 2008
Адрес: {0,0}
Сообщений: 754
Записей в блоге: 1
Отправить сообщение для DaFive с помощью ICQ
Код AS3:
for(var i:int = 0; i < loadArr.length; i++){
  if(event.target == loadArr[i]){
      тот лоадер, который отработал и с каким нужно произвести действие
  }
}
__________________
Кодинг, багинг, алгоритминг. me @

Старый 29.05.2012, 13:14
Sintesis вне форума Посмотреть профиль Отправить личное сообщение для Sintesis Найти все сообщения от Sintesis
  № 5  
Ответить с цитированием
Sintesis
 
Аватар для Sintesis

Регистрация: Jul 2008
Сообщений: 912
ага, попробую, но я сделал так и то-же работает, хотя не знаю может лишних действий много делает:
Код AS3:
private function onModelComplete(_event:Event):void {
			_event.currentTarget.removeEventListener(Event.COMPLETE, onModelComplete);
			for (var i:int; i < nameArrLen; i++) {
 
				objMod = loadArr[i].data;
				objArr[i] = objMod;
			}
		}
здесь objMod:Object, objArr:Array. Этот вариант нормальный или он хуже?

Старый 29.05.2012, 13:40
DaFive вне форума Посмотреть профиль Отправить личное сообщение для DaFive Посетить домашнюю страницу DaFive Найти все сообщения от DaFive
  № 6  
Ответить с цитированием
DaFive
 
Аватар для DaFive

Регистрация: May 2008
Адрес: {0,0}
Сообщений: 754
Записей в блоге: 1
Отправить сообщение для DaFive с помощью ICQ
Смотря для чего нужен objMod и для чего loadArr[i].data и почему objArr[i] сразу не равно loadArr[i].data.
__________________
Кодинг, багинг, алгоритминг. me @

Старый 29.05.2012, 13:47
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 7  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Тогда уж
Код AS3:
private function onModelComplete(event:Event):void 
{
	var loader:URLLoader = event.currentTarget as URLLoader;
	loader.removeEventListener(Event.COMPLETE, onModelComplete);
	var index:int = loadArr.indexOf(loader);
 	objArr[index] =  loader.data;
}
__________________
Reality.getBounds(this);

Старый 29.05.2012, 14:05
DaFive вне форума Посмотреть профиль Отправить личное сообщение для DaFive Посетить домашнюю страницу DaFive Найти все сообщения от DaFive
  № 8  
Ответить с цитированием
DaFive
 
Аватар для DaFive

Регистрация: May 2008
Адрес: {0,0}
Сообщений: 754
Записей в блоге: 1
Отправить сообщение для DaFive с помощью ICQ
Wolsh, чисто спортивный интерес. indexOf сильно шустрее перебора циклом (на малых и больших объёмах) или медленнее но в угоду простоте кода.
__________________
Кодинг, багинг, алгоритминг. me @

Старый 29.05.2012, 14:12
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 9  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
DaFive мне кажется тут даже нету задумки о скорости или медленности, это единичная операция, а не постоянная, поэтому естественно здесь мы делаем код красивым и не важно быстрый он или медленный* ( на столько сильно медленный все равно не будет )
__________________
Марк Tween

Старый 29.05.2012, 14:24
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 10  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Смешно говорить о разнице скорости шустрения массива (миллисекунды), когда речь идет об операции, привязанной к загрузке внешних данных. Несопоставимые промежутки времени.
Наверное, in4core об этом же говорит.
Кроме того, я написал "тогда уж", подразумевая что есть же и другие способы связки. Словарик там, name и прочее.
__________________
Reality.getBounds(this);

Создать новую тему Ответ Часовой пояс GMT +4, время: 02:05.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 02:05.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.