![]() |
Перерисовка компонента
Добрый день.
В скрипте мне нужно в цикле выполнять некие действия, которые занимают довольно длительное время, и я хотел бы информировать пользователя о прогрессе выполнения. Для этого я использую встроенный флешовый ProgressBar, и в цикле увеличиваю его значение. Проблема заключается в том, что из-за высокой нагрузки процессора во время выполения скрипта (до 100%) ProgressBar просто не успевает перерисовываться. Как мне указать флешу, чтобы он прорисовал ProgressBar, и только после этого приступил к следующей итерации цикла? Т.е. мне нужен, если кому известно, аналог Application.ProcessMessages из Delphi. Функции sleep() или аналога я тоже не нашёл - можно было бы попробовать приостановить выполнение скрипта на несколько милисекунд - по идее, флеш должен был бы высвободившееся процессорное время потратить на прорисовку ProgressBar. В общем, подскажите :) |
Используй связку onEnterFrame(или setInterval) и for.
Код:
this.maxIteration = 100000; |
Спасибо. Так заработало. Только МЕДЛЕННО. Пытался выставить 24 или 36 FPS для флешки - метод отчего-то не стал вызываться быстрее. Вариант с setInterval не получился - setInterval постоянно возвращает undefined (я из метода класса создал функцию functionName в _root, и пытался на неё навесить setInterval - не помогло ни _root.functionName, ни просто functionName; также не удалось навесить setInterval на метод класса - что, впрочем, и неудивительно).
Как бы мне ускорить выполение? Не поддерживает ли Flash многопоточность? |
1. Увеличение fps в пропертях должно непосредственно оказывать влияние на onEnterFrame, если конечно комп нормальный.
Можно увеличить значение curIteration. Что значит медленно? Сколько итераций в цикле? 2. Флеш не поддерживает многопоточность, хотя есть надежда на 9. Но можно моделировать с помощью внешней архитектуры (2 swf & LocalConnection). |
| Часовой пояс GMT +4, время: 22:54. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.