PDA

Просмотр полной версии : Контроль анимации MovieClip'а


s3dworld
05.03.2012, 16:45
Всем доброго времени суток!

Имеется swf файл с анимацией персонажа. Внутри распиханы картинки, метки и скрипты. Например зацикливание проигрывания одной метки, переход от анимации удала к другой метки (к метке стояния). И ко всему этому я могу обратиться только через метки. Заранее оговорено представление меток:


<action>_<dir>


Например:


stay_left
walk_down_right


И вот я решил сделать функцию разворота animTurnLeft(), которая бы поворачивала объект против часовой стрелки. При этом я знаю какая в текущий момент выполняется анимация и какое направление:


// Анимация
public static const TYPE_STAY :uint = 0;
public static const TYPE_WALK :uint = 1;
public static const TYPE_POUNCH :uint = 2;
public static const TYPE_FALL :uint = 3;

// Направление
public static const DIR_UP :uint = 0;
public static const DIR_UP_RIGHT :uint = 1;
public static const DIR_RIGHT :uint = 2;
public static const DIR_DOWN_RIGHT :uint = 3;
public static const DIR_DOWN :uint = 4;
public static const DIR_DOWN_LEFT :uint = 5;
public static const DIR_LEFT :uint = 6;
public static const DIR_UP_LEFT :uint = 7;

protected var animType :uint = TYPE_STAY; // Текущий тип
protected var animDir :uint = DIR_UP; // Текущее направление


Беру текущее направление и высчитываю новое. Но если бы я переходил просто по метке:


gotoAndPlay("walk_left");


Потом:


gotoAndPlay("walk_up_left");


То у меня каждый раз анимация начиналась бы сначала. А было бы здорово продолжать её с того же локального кадра (конечно с учётом что количество кадров в одном типе анимации одинакова - а так оно и есть). Через currentFrame я могу получить индекс текущего кадра, например запомнить его при повороте, но он текущий, а не локальный. Как реализовать то что я задумал?

botbot
05.03.2012, 18:34
currentLabels - все метки в клипе. Можешь получать по этому массиву номер кадра у метки и прибавлять дельту, которая уже проиграна.