![]() |
|
||||||||||
|
|||||
|
Регистрация: Feb 2006
Сообщений: 9
|
Всем привет.
Помогите решить следующую проблему: Имеется Flash, который инициализируется XML-ем. Эта XML-строка передаётся в конструктор класса, который загружает кучу мувиков и отрисовывает их согласно содержимому XML. Вызов конструтора происходит из первого кадра линейки. Проблема в том, что отработка конструктора занимает секунд 10, при этом процессор грузится на 100% (проверял дома - 3.4 ГГц двухъядерный процессор грузится тоже на полную). К тому же по истечению определённого таймаута Flash-player приостанавливает его выполнение с дурацким вопросом "Ваш скрипт выполняется слишком медленно, не хотите ли его остановить?". Я знаю количество мувиков, которые я подгружаю и отрисовываю, соответственно я попробовал сделать какой-то прелоадер, чтобы после отрисовки каждого мувика продвигать прогресс прелоадера, а в конце показать всё сразу - но фиг там!!! Флеш из-за высокой загрузки процессора ничего не рисует!!!! У меня в цикле идёт загрузка и отрисовка мувиков, и я после каждого хотел бы приостановить выполнение цикла, отрисовать прогресс, и перейти к следующему, НО ФЛЕШ НЕ ПОЗВОЛЯЕТ ТАКОГО ДЕЛАТЬ!!!!!!!! Поддерживает ли Флеш потоки? Поддерживает ли sleep для текущего потока? Есть ли аналог метода ProcessMessages - приостановить выполнение текущего потока, отрисовать всё, что нужно и продолжить выполнение? Как можно заставить Флеш не грузить процессор так сильно? Мне не нужно получить всё как можно быстрее, меня 100% устроить прелоадер + более медленная инициализация. Я сам не Флеш-программист, просто пришлось заняться .Заранее спасибо. |
|
|||||
|
Регистрация: May 2001
Адрес: Москва
Сообщений: 670
|
боюсь тебя обмануть, но перерисовка всего происходит при каждой смене кадра (fps). и для уменьшения нагрузки придется удалять мувики.
"Ваш скрипт выполняется слишком медленно..." - прерывай цикл или что там у тебя и возобновляй его выполнение после смены кадра. как пример при fps 12 |
|
|||||
|
Регистрация: Feb 2006
Сообщений: 97
|
Mihcom
забей на обычные циклы. нужно разгрузить процессор, юзай обчный трёхкадровый цикл. обычно: 1й кадр - инициализация 2й - Итый шаг (или несколько шагов, как заметил Stone) 3й - условие выхода или повтора второго кадра кстати, Stone, переменную надо назвать spf ![]() |
|
|||||
|
Регистрация: Oct 2004
Сообщений: 141
|
Цитата:
- potapenko.comТам есть такой класс как конвеер. Конвеер позволяет разнести запуск функций во времени, останавливать поток и запускать его снова. Используй его и будет тебе счастье. |
![]() |
![]() |
Часовой пояс GMT +4, время: 22:05. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|