Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   ProgressBar и циклы (http://www.flasher.ru/forum/showthread.php?t=119934)

Turetskiy 07.01.2009 03:14

ProgressBar и циклы
 
Доброго времени суток всем.
Есть у меня в проге два цикла (вложеных), работают в среднем секунд
пять-семь (обработка изображения). И надо пока они трудятся показать пользователю progressbar, шоб не скучал. Но, как ни пытался, progressbar отрисовывается только после того как циклы отработают полностью.
Можно ли с этим как-то бороться?

З.Ы.
когда-то возникала у меня такая проблема на Delphi, там все решилось
перерисовкой, но во Flex, возможности перерисовать заданную область или,
пусть даже все окно - не нашел... Может не там ищу?

Заранее благодарен.

fljot 07.01.2009 04:29

по-моему, слишком долго циклы работают.. есть опасность появления сообщения "acionscript is running to slow on this machine ..."
плюс, если я не ошибаюсь, плеер замирает, пока исполняются циклы.

так что я бы посоветовал немного размазать работу циклов по времени, чтобы и progressbar мог обновиться и таймаута не было

AQUAFRESH 07.01.2009 21:50

хм... для этого нада многопоточность... хотя Flex её не подерживает...
Перерисовка области ... есть... я её дето видел... можешь вот сдесь посмотреть...
http://livedocs.adobe.com/flex/3/langref/mx/

kutuzov 08.01.2009 19:12

1. перед началом цикла засекаем время - getTimer()
2. на каждой итерации цикла смотрим сколько прошло, если больше, допустим 40 мс (что соответствует 25 кадрам в секунду), прерываем цикл и запоминаем последние значения для этого цикла.
3. выводим процент выполнения.
4. на следующем кадре необходимо восстановить цикл, чтобы он продолжил считать с того места где мы его прервали.
5. и снова засекаем время и на каждой итерации проверяем прошедшее время
и т.д.

nibb13 12.01.2009 10:47

kutuzov, в принципе, всё верно объяснил. Остаётся лишь добавить опыт Жени Потапенко:
Ссылка нумберо уно
Ссылка нумберо дос


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

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