Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   обработка события (http://www.flasher.ru/forum/showthread.php?t=150326)

vtroxx 09.02.2011 21:30

обработка события
 
Делаю в for:

Код AS3:

for (var item:int = 0; item < count; item++) {
................
var loader:Loader = new Loader();
 
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,
    function(e:Event):void {
      imageLoaded(e,  item);   
    }
);
..............
}


в итоге, imageLoaded вызывается в одним и тем же item(последнее вычисленное в цикле), картинки все разные, как и должно быть, но и item'ы надо чтобы разные приходили.

Что делаю не так?

3p.station 09.02.2011 22:27

не использовать вложенные функции (ваше событие это не синхронный процесс, тоесть imageLoaded(e, item); выполняется не сразу как только вы дали лоадеру задачу грузить контент)

Wolsh 10.02.2011 03:25

Вложенные функции конечно зло и лучше вынести в приватный метод, но причина не в этом. Просто события окончания загрузки срабатывают позже, к этому времени цикл уже отработал и item равна последнему значению в цикле. Вам надо к каждому лоадеру привязать собственное значение. Можно использовать Dictionary или просто складывать лоадеры в приватный массив, а при получении ссылки на лоадер из события загрузки узнавать индекс этого лоадера в массиве (Array#indexOf).


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

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