アニメーションを Flex コンポーネントにして使おう
アニメーションを制御するときに fla のフレームに as を書いてしまうと途端に作業効率が下がってしまいます。とくにチームとしての効率が。
そこで、Flash のシンボルを Flex コンポーネントにすることで、アニメーションと as を極力分離します。
タイムラインに、ラベルを指定します。
そしてタイムライン終了時にフレームに記述するのは、
gotoAndStop(); this.dispatchEvent(new Event(Event.COMPLETE));
これだけにします。外からこのコンポーネントに対して
gotoAndPlay("hoge")
と実行すれば、アニメーションが再生され、gotoAndStop() のタイミングで、COMPLETE が発送されます。
爆速シリーズでおなじみの弊社 嶋田が作成したタイムラインベースのアニメーションを Flex コンポーネントにしてつかってみました。
左上のボタンをクリックするとジャンプします。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:local="*" creationComplete="init();">
<mx:Script>
<![CDATA[
private function init():void
{
monster.chara.gotoAndPlay("action1");
}
private function myButtonClick():void
{
monster.chara.gotoAndPlay("action5");
}
]]>
</mx:Script>
<local:MonsterComp id="monster"/>
<mx:Button click="myButtonClick();"/>
</mx:Application>
Flex コンポーネントにしたアニメーションに対して、ボタンを押したら、指定のラベルに gotoAndPlay してあげるだけ。
アニメーションを本体から分離することで、分業が可能となり、作業効率が上がる仕組みです。
fla ファイルの肥大化も避けられますし、大きくなりすぎたファイルが壊れたら悲しすぎます。
さてさて、実際にこのような手法で制作したものが、ミクモンです。
先日バトル機能を追加しました。よろしかったら遊んでみてください。

