Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Контроль анимации MovieClip'а (http://www.flasher.ru/forum/showthread.php?t=176250)

s3dworld 05.03.2012 16:45

Контроль анимации MovieClip'а
 
Всем доброго времени суток!

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

Код:

<action>_<dir>
Например:

Код:

stay_left
walk_down_right

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

Код AS1/AS2:

// Анимация
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;                        // Текущее направление

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

Код AS3:

gotoAndPlay("walk_left");

Потом:

Код AS3:

gotoAndPlay("walk_up_left");

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

botbot 05.03.2012 18:34

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


Часовой пояс GMT +4, время: 10:10.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.