![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Dec 2010
Адрес: Санкт-Петербург
Сообщений: 6
|
Такой вопрос - есть некий кусок кода, который выполняется довольно долго и который невозможно разбить на итерации. Допустим, этот код содержится в методе calculate();
Как мне по-простому сделать, чтобы перед входом в этот код на экране изменился статус и этот экран перерисовался? Т.е. я хочу сделать что-то такое: На деле это приводит к подвисанию плеера а юзер видит только статус "Done!". Можно ли как-то после установки первого статуса сделать force redraw? PS: Есть, конечно, вариант выставить статус и поставить запуск calculate() на лисенер ENTER_FRAME для след. фрейма. Но это как-то криво. Есть ли вариант попроще? |
|
|||||
|
Регистрация: Mar 2008
Сообщений: 215
|
Это вполне приемлемо в данном контексте.
|
|
|||||
|
Регистрация: Dec 2010
Адрес: Санкт-Петербург
Сообщений: 6
|
Не очень. У меня уже и так туева хуча разныл лисенеров на ENTER_FRAME. Не хочется выставлять другой, флаги, восстанавливать старый после обработки и т.п.
Хотелось бы более красивого решения. |
|
|||||
|
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
Цитата:
по теме - делайте через события.
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
|
Можно было бы тупо взять конвеер Потапенко и не сильно размышляя об архитектуре загнать в него 3 действия:
conveyor.add(setWaitText, "please wait..."); conveyor.addFrames(1);// Подождать один кадр conveyor.add(doHardCalculation); conveyor.add(setWaitText, "complete"); А так - коли не можете справиться с асинхронщиной, но она легко выстраивается в цепочку - сделайте свою асинхронную очередь сами. |
|
|||||
|
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
Цитата:
отложите запуск calculate() на 50-100 мс либо через таймер либо через setTimeout FP успеет перерисовать экран и расчет запустится на новом экране Правильно: создайте объект, который нужно показать пользователю перед началом расчетов, на его событие ADDED_TO_STAGE повесьте слушателя, который и запустит вычисление Добавлено через 6 минут кстати, можно использовать и событие CHANGE текстового поля status главное только потом отписаться сразу после запуска вычислений |
|
|||||
|
Регистрация: Dec 2010
Адрес: Санкт-Петербург
Сообщений: 6
|
Ясно, спасибо. Собственно, как я и подозревал - придется вешать listener'ы
|
![]() |
![]() |
Часовой пояс GMT +4, время: 01:46. |
|
|
« Предыдущая тема | Следующая тема » |
|
|