Wolsh, аа вот оно что, а я думал глаголы в камментах этого форума )))
Ок, учтём. |
Оппа. А эта программа (как оказалось) работает не правильно.
Она три раза подряд выдает третье изображение. Я даже подозреваю, что все три элемента массива содержат третье изображение. Опять какие-то мутно-уловимые асинхронные штуковины? Прошу помощи в нахождении бага. Или может быть, всё надо переделывать с нуля. Не знаю точно как, может быть сначала создать массив URLRequest значений, и цикл другого типа юзать. |
А чего Вы ждали, у Вас же один Лоадер сохраняется в приватной переменной, последний из создаваемых в цикле. Или Вы думали, что одна переменная будет хранить все три Лоадера в себе?))
Соответственно в обработчике Вы у этого последнего Лоадера и забираете то что он загрузил, независимо от того, какой Лоадер на самом деле послал событие COMPLETE: Код AS3:
Код AS3:
|
Wolsh, благодарю за багфикс, теперь все три картинки выводятся.
Цитата:
Рассмотрим по итерациям. 1. i = 0, Создаем экземпляр imageLoader, Грузим в него "text1.png", Запускаем слушатель. 2. Выходим из цикла for. В переменную BitData записываем картинку text1.png, Перекидываем ее в BitItem. 3. Засовываем его в PicArray[0], Наращиваем переменную индекса массива. 4. Возвращаемся в цикл for, получаем i = 1, повторяем. Я же успел значение text1.png засунуть в массив! И при следующей итерации, то же должно произойти с text2.png... Цитата:
Цитата:
Я предполагал, что либо этот выход происходит каждый раз, и я успеваю засунуть значение в массив. Либо же, как-то асинхронно запустяццо три слушателя, и каждый (уже сложнее представить такое, лол) как-то разрулит ситуацию сам, ведь он успел получить соответствующую ему строку. Цитата:
Однако почему она не равнозначна той записи (по указанным выше моментам), не очень понятно. |
Цитата:
Цитата:
Учите основы. Читайте главы про событийную модель. Если нужно, пейте кофе. Цитата:
|
Вот оно как, картина начинает проясняться.
Хотя некоторые сомнения всё-таки остаются. Например, если сборщик мусора сжирает первые две инициации initListener, тогда, вроде как и эта строка Код AS3:
Впрочем, не хочу отвлекать вас лишний раз, нужно перечитывать главу Мука про события. Тем более, что кофе пока вне доступа, да к тому же еще и понедельник : ) Хотелось бы, разве что, обратить внимание на вот этот фрагмент: Цитата:
Код AS3:
Код AS3:
И можно отметить интересный ньюанс: В изначальном варианте, порядок вывода картинок такой: Вторая, Третья, Первая. (похоже, это зависит от размеров файлов: 39Кб, 34Кб, 31Кб) В исправленном варианте, порядок вывода картинок такой: Третья, Первая, Вторая. (здесь принцип непонятен). |
А порядка и не будет, тем более с такой маленькой разницей в весе. Там слишком много факторов влияют, особенно в сети (да и при чтении с диска есть моменты))). Если важен порядок, надо использовать последовательную, а не параллельную загрузку (то есть грузить в один лоадер, каждую следующую загрузку начинать только после завершения предыдущей).
Локальная переменная — да, я имел в виду ее. Обратите внимание, ссылка опять вроде бы нигде не сохраняется. Возможно, у работающих Лоадеров просто иммунитет — честно, не задавался этим вопросом. |
У Мука в книге кстати был не Event.Complete, а Event.Init, там правда один файл грузился.
Может имунны лоадеры у которых комплит, а у которых инит нет, но это надо отдельно смотреть. Ок, понятно. Заносим "последовательная загрузка" в ToDo List. |
Цитата:
Код:
>Цикл отработал initListener == ссылке на последний лоадер. Загрузки начались. Цитата:
Порядок не зависит от размера файла, кто первый загрузился того и тапки. Конечно первый чаще загружается самый маленький, но при таком маленьком разбросе в размерах, как у вас, это может быть какой угодно файл. P.S. Про порядок вижу вам уже ответили пока я пост писал. P.P.S. Если по хорошему, то в вашем случае глобальная переменная класса нужна только одна - массив со ссылками на загруженные картинки. (у вас PicArray) |
Котейка, извиняюсь что туплю, но главу Мука я еще не перечитывал, поэтому...
Цитата:
Ведь currentTarget.content всегда равен ссылке на последний лоадер, и всё равно должна только третья картинка отображаться : ) Как же тогда currentTarget получает различные значения? Цитата:
Код AS3:
|
Часовой пояс GMT +4, время: 02:59. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.