Интеграция

Нарисовал героя и даже сделав для него анимацию, попытался прикрутить его в основной проект.
Для начала пришлось все-таки переписать загрузчик для SWF, теперь он сразу создает нужный клип, название которого приходит ему качестве параметра: function loadclipfromserver(path, loadname,nameclip).

Затем пришлось в структуру(объект) creature добавить mcname,dx,dy,и все другие параметры для анимации
Теперь в функции moveCreature не сразу присваиваются _x и _y, а выполняется ряд действий (может и избыточных, но пока нужных)

Анимация героя

Наконец-то вымученный герой хоть как-то получился, анимация в конец меня убила, но все же есть и результаты.
Сам герой/персонаж оформлен виде отдельного SWF файла с набором фреймов названных особым образом: stand_s, stand_se, stand_e и т.п.
Количество фреймов на анимацию ходьбы - 3, левой-стой-правой.

Загрузка простым образом через loadMovie уже не устраивает, т.к. необходимо отслеживать процесс загрузки. Клип загружаем через MovieClipLoader, на onLoadInit вешаем обработчик загрузки.

Рисуем героя

Попробывал рисовать героя, проблема в том что дажа при минимальной анимации нужно рисовать 5 рисунков просто на один вид.

А если рисоватьперемещения-то вообще опа, дело в том что я не умею рисовать. Совсем.

По гуглив форумы дизайнеров и художников (в т.ч. на Flash) сделал неутешительные ввыоды. Профессиональная художники - настоящие работают только за деньги и вернее за ДЕНЬГИ.

Другие "художники" рисуют много и для игр, но вот качество выходит как у моего сына или у меня (думаю скилл художество у нас сейчас равен).

Осталось прикрутить эффект от ямы-ловушки к Flash

Собственно куда и зачем кто пошел Flash-клиенту неинтересно, а интересно ему принять событие - ACT_CR_DEAD. События у нас отлавливаются функцией playAction и в нем:
if (type_act == 0x05) //dead
{
var cid = toint(data_act[0]);
var how = toint(data_act[1]);
putCreatureInfo("i,"+cid+",h,0,");
addMessage("<font color='#1111ff'>>+getCreatureName(cid)+"</font> - гибнет");
if (cid==_root.userid)
showDead(how);
}

Устанавливаем ловушки и мелкие правки

Сократил массив city_mazeid[] который указывал на города на карте мира, теперь
и города и лабиринты хранятся в структуре world_mazeid, но города имеют id меньше чем MAX_CITYID,
а лабиринты больше. Зачем придумывал два массива мне сейчас и непонятно.

Связи с изменениями слегка поправился код в int makeMaze(int width,int height,int *id,char *data,int wx,int wy,char *dmap)

Также поправил код makeAction(TMazeMap *m,int creatureid,int what,int *ap),
теперь после хода существа (действия ACT_STEP_*) вызывается checkForObject(TMazeCreature *c,TMazeMap *m) - т.е.

Flash - loadMovie vs duplicateMovieClip

Сегодня целый день решил потратить на код. Целый день пошел коту под хвост.

Решил сделать загружаемые объекты, а именно начал делать яму-ловушку при попадании в которую следует смерть (а вы как думали?).
Сделал в виде отдельного SWF и поместил в загружаемую папку. У меня загрузка/отрисовка карты сделана через attachMovie, т.е. объекты создаются как instance (копий) с именами от id в библиотеке.

Эврика или как управлять объектами

Я уже несколько раз сталкивался, что если объект movieclip то не получается им управлять в самом скрипте, если он присутствует на экране сразу (а не создается кодом).

Это была и кнопка "Пропуск хода" - хотелось ее дизайблить при загрузки/подгрузки и кнопка активации телепорта в книге заклинаний.

Все оказалось гораздо проще, чем я думал. Просто я перемудрил. Для таких объектов не включаем галку Export to ActiveScript, это галка нужна только если мы будем attachMovie.

Добавляем характеристики

Про сами характеристики я писал уже ранее, сейчас же прикручиваем параметры. Для этого была сделана структура TCreatureParams.
typedef struct
{
short Stamina;
short Strength;
short Dexterity;
short Intellect;
short HP;
} TCreatureParams;

Которая была добавлена в две структуры в TUser и TMazeCreature, потому как игрок может оказаться в лабиринте, а вот существо из лабиринта никогда не попадает в список пользователей.

При переходе в лабиринт, было добавлено копирование структуры params из TUser в структуру TMazeCreature.

Прикручиваем "книгу действий"

Прикручивал «книгу действий» - экран который вызывается при нажатии на персонажа.
Легко нарисовал прямоугольник, вставил первый клип – активация телепорта, и столкнулся с проблемой №1.Не называешь клип как инстанцию – не получаешь к ней доступа, называешь – ошибка , что данный клип используется другой инстанцией. Отжимаешь галку экспорт в ActiveScript – ошибка пропадает, но т.к. клип лежит на другом клипе (книге), то доступа до него нет. Короче что-то не то. И уже было (с кнопкой конец хода)

RSS-материал