![]() |
ProgressBar и циклы
Доброго времени суток всем.
Есть у меня в проге два цикла (вложеных), работают в среднем секунд пять-семь (обработка изображения). И надо пока они трудятся показать пользователю progressbar, шоб не скучал. Но, как ни пытался, progressbar отрисовывается только после того как циклы отработают полностью. Можно ли с этим как-то бороться? З.Ы. когда-то возникала у меня такая проблема на Delphi, там все решилось перерисовкой, но во Flex, возможности перерисовать заданную область или, пусть даже все окно - не нашел... Может не там ищу? Заранее благодарен. |
по-моему, слишком долго циклы работают.. есть опасность появления сообщения "acionscript is running to slow on this machine ..."
плюс, если я не ошибаюсь, плеер замирает, пока исполняются циклы. так что я бы посоветовал немного размазать работу циклов по времени, чтобы и progressbar мог обновиться и таймаута не было |
хм... для этого нада многопоточность... хотя Flex её не подерживает...
Перерисовка области ... есть... я её дето видел... можешь вот сдесь посмотреть... http://livedocs.adobe.com/flex/3/langref/mx/ |
1. перед началом цикла засекаем время - getTimer()
2. на каждой итерации цикла смотрим сколько прошло, если больше, допустим 40 мс (что соответствует 25 кадрам в секунду), прерываем цикл и запоминаем последние значения для этого цикла. 3. выводим процент выполнения. 4. на следующем кадре необходимо восстановить цикл, чтобы он продолжил считать с того места где мы его прервали. 5. и снова засекаем время и на каждой итерации проверяем прошедшее время и т.д. |
kutuzov, в принципе, всё верно объяснил. Остаётся лишь добавить опыт Жени Потапенко:
Ссылка нумберо уно Ссылка нумберо дос |
| Часовой пояс GMT +4, время: 20:04. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.