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

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

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

Регистрация: Oct 2008
Сообщений: 11
По умолчанию Вопрос по Event-ам

Вот,
как узнать в функции обработки события значение i?

Массивы DATA и loader должны соответствовать по своим индексам.
Код AS3:
var loader:Array = new Array();
var DATA:Array=new Array();
var i:int=0;
var req:URLRequest;
for (i=0;i<100;i++) {
req=new URLRequest("xxxxx"+i+"xx.xx");
loader[i]=new URLLoader();
loader[i].addEventListener(Event.COMPLETE, complete);
loader[i].load(req);
}
 
function complete(ev:Event):void {
//DATA[???]=event.target.data;
// Как тут узнать значение i элемента массива, с которым произошло это событие?
}
__________________
Выбрать микрозаймы онлайн.

Старый 31.01.2009, 18:04
Kuruki вне форума Посмотреть профиль Отправить личное сообщение для Kuruki Найти все сообщения от Kuruki
  № 2  
Ответить с цитированием
Kuruki

Регистрация: Jan 2008
Сообщений: 669
Ну как вариант расширить URLLoader свойством, в котором сохранять значение id.
Код AS3:
package  
{
	import flash.net.URLLoader;
	import flash.net.URLRequest;
 
	public class MyLoader extends URLLoader
	{
		public var id:int;
 
		public function MyLoader(request:URLRequest = null) 
		{
			super(request);
		}
	}
}
Код AS3:
var loader:Array = new Array();
var i:int=0;
var req:URLRequest;
for (i=0;i<100;i++) {
req=new URLRequest("xxxxx"+i+"xx.xx");
loader[i]=new MyLoader();
loader[i].id = i;
loader[i].addEventListener(Event.COMPLETE, complete);
loader[i].load(req);
}
 
function complete(ev:Event):void {
trace((ev.target as MyLoader).id);
}

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

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Код AS3:
function complete(ev:Event):void {
   for (var i:Number = 0; i < loader.length; i ++){
      if (URLLoader(e.target) == URLLoader(loader[i])) {
         DATA[i] = event.target.data;
      }
   }
}

Старый 31.01.2009, 20:33
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Зачем вам вообще массив DATA?

Старый 31.01.2009, 21:14
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 5  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
так наверно лучше
Код:
var loader:Array = new Array();
var DATA:Array=new Array();
var i:int=0;
var req:URLRequest;
i=0


req=new URLRequest("xxxxx"+i+"xx.xx");
loader[i]=new URLLoader();
loader[i].addEventListener(Event.COMPLETE, complete);
loader[i].load(req);
i++;
 
function complete(ev:Event):void {
if (i<100){
//DATA[???]=event.target.data;
// Как тут узнать значение i элемента массива, с которым произошло это событие?
req=new URLRequest("xxxxx"+i+"xx.xx");
loader[i]=new URLLoader();
loader[i].addEventListener(Event.COMPLETE, complete);
loader[i].load(req);

i++;
}
}
так будет загрузка происходить таким образом
Сначала один,
потом второй
...
ну и так далее по очереди.
А у вас сразу 100 почти одновременно (с разничей в микронаносекунды тактовой частоты процессора)
и не загрузятся вообще. А так может быть до первого не найденного файла.


Последний раз редактировалось Alex Lexcuk; 31.01.2009 в 21:17.
Старый 31.01.2009, 21:46
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 6  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
Волгоградец, это Вы всегда вместо indexOf используете?

Добавлено через 7 минут
тут даже ещё смешнее:
Код AS3:
function complete(ev:Event):void {
   // каждый раз запрашиваем length, что бы цикл подольше работал. и ещё тут очень необходима дробная часть i, вдруг итерация будет дробной?
   for (var i:Number = 0; i < loader.length; i ++){
      //тут, чтобы сравнить 2 объекта, мы зачем-то сперва их конвертируем, и потом пытаемся сравнить 2 объекта, а не пытаемся выяснить тот ли это объект. нам же недостаточно строгого сравнения. причём откуда-то берётся некий объект "e".
      if (URLLoader(e.target) == URLLoader(loader[i])) {
         // а тут уже появляется некий event. причём тут нам приведение типов нафиг не надо.
         DATA[i] = event.target.data;
      }
   }
}
Код AS3:
function complete(event:Event):void {
   var i:int = loader.indexOf( event.target );
   if ( i>=0 ) {
      DATA[i] = ( event.target as URLLoader ).data;
   }
}


Последний раз редактировалось BlooDHounD; 31.01.2009 в 21:55.
Старый 31.01.2009, 22:19
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 7  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
Не совсем понятен смысл всего этого, почему бы не отслеживать сами данные, зачем плодить лоадеры и сохранять ссылки на них?
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

Старый 01.02.2009, 02:53
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 8  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Если есть массив loader, за каким хреном вам массив DATA? Получить данные можно и из массива loader всё по тем же индексам.

Старый 03.02.2009, 12:39
Vikar вне форума Посмотреть профиль Отправить личное сообщение для Vikar Посетить домашнюю страницу Vikar Найти все сообщения от Vikar
  № 9  
Ответить с цитированием
Vikar
 
Аватар для Vikar

Регистрация: Oct 2008
Сообщений: 11
то просто короткий пример был
DATA у меня может быть массив TextField-ов или Мувиклипов, а Лоадером я загружаю данные для них (например чтобы вставить в соответствующие TextFieldы).
Загружать приходится много и все сразу.

Alex Lexcuk, можно одновременно грузить сколько угодно данных, они все корректно загрузятся. Но последовательная загрузка хороша тем что не будет тормозов
__________________
Выбрать микрозаймы онлайн.


Последний раз редактировалось Vikar; 03.02.2009 в 12:46.
Старый 03.02.2009, 13:22
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 10  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
Vikar, неа. одновременно бровзеры разрешают открывать до 2-4 соединение. если грузится будет много, то они тупо порвутся по таймаутам.

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

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

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


 


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


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