![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
protected function button1_clickHandler(event:MouseEvent):void { for (var i:uint = 0; i < myArray.length; i++) { var loader:Loader = new Loader(); var request:URLRequest = new URLRequest("images/" + i + ".jpg"); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); loader.load(request); } } protected function onComplete(event:Event):void { trace (LoaderInfo(event.target).url); } file:///C|/Users/Astraport2011/Adobe%20Flash%20Builder%204.5/c3d/bin%2Ddebug/images/4.jpg file:///C|/Users/Astraport2011/Adobe%20Flash%20Builder%204.5/c3d/bin%2Ddebug/images/2.jpg file:///C|/Users/Astraport2011/Adobe%20Flash%20Builder%204.5/c3d/bin%2Ddebug/images/0.jpg file:///C|/Users/Astraport2011/Adobe%20Flash%20Builder%204.5/c3d/bin%2Ddebug/images/3.jpg file:///C|/Users/Astraport2011/Adobe%20Flash%20Builder%204.5/c3d/bin%2Ddebug/images/1.jpg При этом порядок один и тот же сохраняется при каждом дебаге. Однако если вызывать функцию несколько раз в запущенном приложение, то второй раз тоже что первый, а вот третий, четвертый и пятый по разному. Потом опять по кругу. |
|
|||||
|
"Loader" - "event.target" потому что это объект а не массив. А объекты не сортируются как массив по индексу. Ручками)
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь! |
|
|||||
|
Регистрация: Jun 2011
Сообщений: 212
|
loader.load - асинхронный метод. То есть неизвестно когда наступит Event.COMPLETE для конкретного loader.
Грубо можно считать, что чем больше картинка, тем позже наступает Event.COMPLETE. Сравнение объект/массив здесь ни при чем. Лоадеры у вас создаются внутри цикла - поэтому их много (myArray.length-1 штук). И для каждого из них возникает Event.COMPLETE. Последний раз редактировалось trng; 05.10.2011 в 01:28. |
|
|||||
|
Регистрация: Jun 2011
Сообщений: 212
|
Не совсем понятно зачем привязываться к порядку загрузки, но если уж это так принципиально, то есть два варианта:
1. Если важен именно порядок загрузки, то каждая следующая загрузка (очевидно) должна начинаться после предыдущей. Например как то так: protected var currentPic:int = 0; protected function button1_clickHandler(event:MouseEvent):void { var loader:Loader = new Loader(); var request:URLRequest = new URLRequest("images/" + currentPic + ".jpg"); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); loader.load(request); } protected function onComplete(event:Event):void { trace (LoaderInfo(event.target).url); currentPic++; if (currentPic == myArray.length) return; var loader:Loader = new Loader(); var request:URLRequest = new URLRequest("images/" + currentPic + ".jpg"); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); loader.load(request); } 2. Если порядок не важен, а важно дождаться загрузки ВСЕХ картинок, то тоже с переменной currentPic, и когда currentPic == myArray.length - можно приступать к дальнейшим действиям. |
|
|||||
|
trng, спасибо.
Второй вариант понятен, а вот первый после загрузки первой картинки выдает ошибку: SecurityError: Error #2000: Отсутствует активный контекст безопасности. Добавлено через 2 минуты Упс... Сорри. Моя ошибка. Все работает и по первому варианту! Спасибо. |
![]() |
![]() |
Часовой пояс GMT +4, время: 18:17. |
|
|
« Предыдущая тема | Следующая тема » |
|
|