Форум 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=124087)

Arand 21.04.2009 00:22

Ожидание загрузки без перехода в функцию
 
Нужно остановить выполнение кода до загрузки

Код AS3:

loader.load(new URLRequest ("image.jpg"));

и продолжать выполнение не в вызванной функции

Код AS3:

loader.addEventListener(Event.COMPLETE, completeImages);
 
function completeImages(evnt:Event):void
{
 //  здесь продолжение после загрузки
}

а в основной функции, в которой собственно и была команда загрузки.


Приходит на ум переменная loaded
Код AS3:

function completeImages(evnt:Event):void
{
 loaded=true;
}

и цикл в основной функции, который выполняется пока loaded не станет true

Код AS3:

loaded=false;
while (loaded==false) {;} // заглушка на время загрузки

Так вот. Насколько это правильно, и есть другие способы не переходить в другую функцию?

wvxvw 21.04.2009 00:43

Вы сами только что выше описали нормальный способ - с использователем слушателя.
Ваш последний вариант вообще ни в какие ворота не лезет. Скорее всего плеер просто выдаст вам ошибку о том, что скрипт выполнялся очень долго, предварительно повесив браузер...

BlooDHounD 21.04.2009 00:46

ничего не выйдет. почитайте про однопоточные системы и асинхронные вызовы.

Котяра 21.04.2009 00:51

просто разделите функцию на две части

Arand 21.04.2009 01:02

Хорошо. Спасибо всем!

Тогда ещё вопрос, косвенно связанный с этим.

Как загрузить ряд картинок, используя только один Loader?
Передавая BitmapData другим объектам после загрузки, и, естественно, с ожиданием загрузки.

wvxvw 21.04.2009 02:43

>> Как загрузить ряд картинок, используя только один Loader?
Передавая BitmapData другим объектам после загрузки, и, естественно, с ожиданием загрузки.
Ответить с цитированием

Лучше так не делать. т.как если вы загрузите в тот же лоадер новый контент не выгрузив предварительно следующий вы больше никогда не сможете выгрузить его из памяти.
А вообще - ну, вот, вы же подписались на событие загрузки, вот, когда оно происходит, проверяйте все ли загружено, если чего-то не хватает - догружаете, если нет - значит все...

Arand 21.04.2009 03:18

Нет, конечно, принцип ясен.
Просто, если я гружу ряд картинок в цикле, то с одним Loader'ом организовать ожидание после каждой итерации проблематично.

wvxvw 21.04.2009 03:52

Ну так тут же логичный вопрос: а зачем вы это пытаетесь сделать в цикле, если изначально понимаете, что это не возможно? Вам просто нужно после каждой загрузки в слушателе проверить нужно ли грузить следующую или нет.

Arand 21.04.2009 04:08

Всё, всё.

Невозможно, так невозможно.
Всегда хочется знать, где находятся границы возможностей.

BlooDHounD 21.04.2009 10:25

в 3м посте.


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

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