![]() |
Насильно перерисовать графику (долговыполняющийся код)
Такой вопрос - есть некий кусок кода, который выполняется довольно долго и который невозможно разбить на итерации. Допустим, этот код содержится в методе calculate();
Как мне по-простому сделать, чтобы перед входом в этот код на экране изменился статус и этот экран перерисовался? Т.е. я хочу сделать что-то такое: Код AS3:
PS: Есть, конечно, вариант выставить статус и поставить запуск calculate() на лисенер ENTER_FRAME для след. фрейма. Но это как-то криво. Есть ли вариант попроще? |
Это вполне приемлемо в данном контексте.
|
Цитата:
Хотелось бы более красивого решения. |
Цитата:
по теме - делайте через события. |
Можно было бы тупо взять конвеер Потапенко и не сильно размышляя об архитектуре загнать в него 3 действия:
Код AS3:
А так - коли не можете справиться с асинхронщиной, но она легко выстраивается в цепочку - сделайте свою асинхронную очередь сами. |
Цитата:
отложите запуск calculate() на 50-100 мс либо через таймер либо через setTimeout FP успеет перерисовать экран и расчет запустится на новом экране Правильно: создайте объект, который нужно показать пользователю перед началом расчетов, на его событие ADDED_TO_STAGE повесьте слушателя, который и запустит вычисление Добавлено через 6 минут кстати, можно использовать и событие CHANGE текстового поля status главное только потом отписаться сразу после запуска вычислений |
Ясно, спасибо. Собственно, как я и подозревал - придется вешать listener'ы
|
| Часовой пояс GMT +4, время: 03:05. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.