Не все знают, что в редакторе Adobe Flash присутствует возможность превратить анимацию, созданную вручную, в код ActionScript 3.0. Полученный AS-код можно затем использовать для анимирования других объектов (потомков DisplayObject-а) или применить в других flash-проектах. Рассмотрим, как это делается...
Первым делом, нам понадобится простая анимация, созданная в Adobe Flash (я буду использовать Adobe Flash CS 5.5), которую мы и будем экспортировать в код ActionScript 3.0. Для этого создадим на сцене флеш-проекта MovieClip «mc» и применим к нему «Create Classic Tween». Когда анимация будет создана, вызовите контекстное меню над анимируемым мувиклипом. Обратите внимание, что в контекстном меню теперь доступен новый пункт - «Copy Motion as ActionScript 3.0...».
Жмём по этому пункту. Появляется окно:
В этом окне надо ввести имя того объекта, к которому вы хотите в будущем применить экспортируемый анимационный эффект. Допустим, что у нас есть ещё один флеш-проект, на сцене которого имеется мувиклип с именем «new_mc». И именно к «new_mc» мы собираемся применить экспортируемый код ActionScript 3.0. Итак, в поле ввода забиваем название «new_mc» и жмём «Ok». Всё! Теперь в буфер обмена скопировался нужный нам код ActionScript.
После этого идём в другой наш flash-проект (тот самый, на сцене которого находится упоминавшийся ранее мувиклип «new_mc»). В этом проекте открываем панель «Actions» и в эту панель вставляем код из буфера обмена (для этого в поле ввода кода панели «Actions» вызываем контекстное меню и выбираем пункт «Paste»).
Код ActionScript 3.0:
import fl.motion.Animator;
var new_mc_xml:XML = <Motion duration="30" xmlns="fl.motion.*" xmlns:geom="flash.geom.*" xmlns:filters="flash.filters.*">
<source>
<Source frameRate="24" x="83" y="204.95" scaleX="1" scaleY="1" rotation="0" elementType="movie clip" symbolName="Symbol 1">
<dimensions>
<geom:Rectangle left="-36" top="-36" width="72" height="72"/>
</dimensions>
<transformationPoint>
<geom:Point x="0.5" y="0.5"/>
</transformationPoint>
</Source>
</source>
<Keyframe index="0" tweenSnap="true">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="29"/>
</Motion>;
var new_mc_animator:Animator = new Animator(new_mc_xml, new_mc);
new_mc_animator.play();
Как можно видеть из приведённого выше кода, Adobe Flash сохраняет анимационные эффекты в виде XML-а (переменная new_mc_xml). XML очень удобен для хранения и передачи данных. А, кроме этого, он легко читается человеком. При желании в него можно внести изменения.
А для подключения анимационного эффекта к тому или иному объекту на сцене флеш-ролика используется класс Animator. Клнструктор объектов Animator принимает два значения:
1.) XML с описанием эффекта (new_mc_xml).
2.) Объект, к которому эффект будет применяться (как мы уже ранее договорились, применяться анимация будет к MovieClip-у по имени «new_mc»).
Конечно, применение описанного в этом посте подхода для создания такого простого эффекта, как изменение координат мувиклипа, является неоправданной роскошью. Но если вам требуется запрограммировать какой-то более сложный анимационный эффект, то умение редактора Adobe Flash генерировать код может очень сильно сэкономить ваши силы и время.
Да, greensock - это весчь :-) Сам в восторге от этой библиотеки.