|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Sep 2006
Сообщений: 4
|
Оживить интерфейс при "думании" скрипта
Может кто уже сталкивался с ситуацией - как можно вывернуться: пишу actionScript для решения шахматных задачек (короче, простенькие шахматы), и понятно, что секунд на 5-10 программа должна естесственным образом задумываться. На это время интерфейс флеша при работе программы, разумеется, подвисает, пока не отработает функция "думания". Ситуация не нравится, но как бы это обойти?
Думаю о разбиении цикла "обдумывания" на итерации, которые можно запускать по EnterFrame, но это как-то криво - разбивать процесс перебора на сотни этапиков. Может, что присоветуете? |
|
|||||
Регистрация: Oct 2004
Сообщений: 141
|
Попробовать LocalConnection?
Последний раз редактировалось Leezard; 27.09.2006 в 16:50. |
|
|||||
Регистрация: Sep 2006
Сообщений: 4
|
О, спасибо, намек ясен. В LocalConnection'ах еще не разбирался, но просмотрел доки и вижу, что LocalNet - по адресу проблемы.
|
|
|||||
Регистрация: Oct 2004
Сообщений: 141
|
Только я боюсь если вычисления объемны, тормоза системы все равно будут видны в анимации. Надо пробовать.
P.S. я тут немного запутался У Потапенко LocalNet у флэша LocalConnection Последний раз редактировалось Leezard; 27.09.2006 в 17:02. |
|
|||||
Регистрация: Sep 2006
Сообщений: 4
|
да, я как раз эту страничку Потапенко нашел, так что мы поняли друг друга
Посижу, поразбираюсь. |
|
|||||
Регистрация: Dec 1999
Адрес: Магадан
Сообщений: 763
|
Для начала можно взять флэш-плеер 9, с его Actionscript 3, после этого 5-10 секунд превратятся где-то в 0.1-0.5 секунды (при правильной оптимизации).
Для незамораживания интерфейса делаем следующее: 1. Во время работы скрипта, например, в основном цикле, отслеживаем getTimer() - как только натикало 200 миллисекунд с начала работы цикла (100, 50, 20, 10 - подбираем нужные "тормоза" опытным путём), сохраняем обсчитанные состояния и выходим из цикла. 2. Ждём события EnterFrame как знак обновления графики. 3. Возобнавляем работу скрипта с прерванного места. Для шахмат сделать такие разрывы в работе скрипта несложно, т.к. основное занятие - перебор ходов-кандидатов - достаточно цикличный и последовательный процесс, а функция оценки должна работать быстро.
__________________
Верить никому нельзя. Мне - можно. :) |
|
|||||
Регистрация: Sep 2006
Сообщений: 4
|
Спасибо, Dendroid, вариант с пропусканием EnterFrame для обноволения графики тоже в работе, но применение тут getTimer() я еще не смотрел - так что спасибо за совет - начинаю задействовать скриптовые вещи, которые мной пока во флеше задействованы не были за отсутствием соотв.задач .
|
Часовой пояс GMT +4, время: 18:04. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|