Небольшие переделки

Хотя хотел в плотную заняться графикой, но некая недоделанность меня сильно напрягала и я решил переделать flash-код, а именно механизм обработки событий.

Проблема в том если в процессе игры, кто-то нажмет F5, и перегрузит все, т.е. загрузиться flash-ролик, переменная lastAction = -1, а на сервере она может быть далеко не нуль, а скажем 100.

Данные (по старой версии) передались бы и происходила странная отрисовка с прыжками и странного открытия карты, т.к. карта в предыдущей версии отдавалась только текущая (по текущим координатам, а не запрошенным). В результате была лажа. Поэтому было решено, что открытие карты – внести дополнительный массив в структуру пользователя и отмечать где пользователь был и когда – чтобы корректно отдавать данные по карте.

В результате получилось нечто большое - а именно теперь можно снимать «кино», т.е. воспроизводить последовательно все ходы. Тоже неплохой функционал.
Для того, чтобы это работала также пришлось переписать функцию приема данных с сервера
else if (np=="actionlist")
{
var act:Array = vp.split(",");
for(var i=0;i<act.length/8;i++) {var j=i*8;if (act[j]=="a")
{
var tmp:Array = new Array();
for(var k=0;k<8;k++)
tmp.push( act[j+k]);
actions.push( tmp.join(","));
}
}

Код сильно упростился, мы проверяем на целостность данных (по маркеру 'a') и сохраняем в глобальном массиве actions
Ну и собственно функция проигрывания событий playAction
function playAction()
{
if (actTimer > getTimer()) return;
if (actions.length == 0) return;
var act_delay=300;
….
actTimer = getTimer()+act_delay;

actTimer – таймер, который отвечает за скорость проигрывания каждого действия, стандартная задержка – act_delay, скажем для движения персонажей задержка будет больше, а для системных обработок меньше. Ну и для дальнейшей анимации пригодиться