Правки в Flash

Собственно, необходимо прикрутить очередность хода уже в клиентскую часть.

Для начала была сделана информационная панель (MoveClip), которая должна рисоваться поверх карты, т.к. карта рисуется вся сразу (надеюсь что Flash умно не рисует невидимые клипы).

Для того, чтобы панель была сверху, а не под картой необходимо при запуске перестроить ее "глубину" вручную:_root["infoPanel"].swapDepths(999777);. Число взято с потолка.

Затем в режиме ожидание - была включена функция отрисовки(прорисовке этой панели), вернее счетчика таймера.

function refreshPanel()
{
var timer = int((_root.endTimer - getTimer())/1000);

if (timer<0) { timer=0; }

if (timer>600)
{
_root.strTimer='---';
}
else
{
if (timer<15) {_root.strTimer='<font color="#ff0000">'+timer+'</font&gt';}
else {_root.strTimer=timer;}
}
_root.strTimer2 = getTimer()+"&"+_root.endTimer;

}

Переменная strTimer показывает таймер с отсчетом назад, когда значение меньше 15 он рисуется красным (по дефолту - темно зеленым).
Функция getTimer() возвращает сколько милисекунд уже запущено Flash-приложение, а переменная endTimer хранит в себе значение, когда наступет апокалипсис - конец хода.

Ее значением "рулит" запрос на сервер gettimer.

var need_gettimer=false;
var now = getTimer();
if (_root.endTimer-now < 10*1000) {need_gettimer=true;}
else
if ( (now-_root.lastGetTimer) > 10*1000) {need_gettimer=true;}

if (need_gettimer && now-_root.lastGetTimer > 2*1000)
{
get_from_server("gettimer",add_uri_session("/maze?action=gettimer"));
lastGetTimer=now;
}

Собственно пояснение к коду, запрос посылается примерно каждые 10 секунд, а если значение таймер меньше 10 секунд, то каждые 2 секунды (для этого используем переменную lastGetTimer - запоминаем когда последний раз посылали запрос).

Вообще-то, по-хорошему, прием значений таймера лучше вычислять более правильно, но для начала сойдет и примитивный код в doServer:
if (np=="timer")
{
var now = getTimer();
_root.endTimer = now + toint(vp)*1000;
addMessage("endTimer="+_root.endTimer+" now="+now);
}


To-do лист на завтра.

  • Сделать обработку мышкой передвижение персонажа и кликов для подачи команды
  • Сделать отрисовку на информационной панели о доступных очках движения
  • Сделать на сервере обработку перемещений персонажа
  • Сделать на клиенте прием данных о перемещениях объектов и их взаимодействие