![]() |
Линейное выполнение методов
Здравствуйте. Во флеше есть ряд методов, которые не возвращают результат своей работы, а вызывают событие, куда передают результат. Например метод FileReference.load().
Можно ли обернув этот метод в другую функцию заставить выполниться линейно, т.е. чтобы было так: Код AS3:
|
Неа, в большинстве случаев нет. В некоторых случаях можно через какой-нибудь хак, типа вызова фунции за пределами флеша, которая будет синхронно делать то же самое, что во флеше бы делалось асинхронно, но как правило ничего хорошего из этого не выйдет.
|
Гораздо эффективней будет поменять мышление и мыслить событиями, а не кадрами. Дело не в том, куда передается результат, а когда он будет получен. Время на получение файла неизвестно и никак не зависит от кода, но уж точно не равно нулю. Измените свою логику – другого пути просто нет, Вам не создать мгновенный интернет во всем мире, по-крайней мере не сейчас))) Приложение это не линейная последовательность [кадров, процедур], приложение реагирует на события, время и порядок которых неизвестны (зависят от действий юзера) – логично что оно состоит из блоков, реагирующих на определенные события. Линейности тут просто нет места и никогда не было.
|
Мне нужно из выбранных пользователем файлов (FileReferenceList.browse()) получить информацию из этих файлов, записать инфу в массив и вызвать функцию JS. Хотелось бы так, но getData() использует load():
Код AS3:
|
Создавать очередь с отслеживанием, и когда все будут загружены - переходить к следующему этапу.
|
Т.е при каждом возникновении события загрузки файла, проверять все ли файлы обработаны и тогда вызвать JS функцию?
Код AS3:
|
В мануле как раз рассматривается такой вариант с LIST_COMPLETE event:
http://help.adobe.com/en_US/FlashPla...renceList.html |
Ну идея такая, да. Реализация конечно содержит больше.. нюансов. Например push не гарантирует порядок в data как в files, а он бывает важен (возможно, не в такой ситуации).
|
S-ed, Wolsh, спасибо, вроде бы идею понял :)
|
| Часовой пояс GMT +4, время: 13:10. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.