アニメーションを 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 ファイルの肥大化も避けられますし、大きくなりすぎたファイルが壊れたら悲しすぎます。
さてさて、実際にこのような手法で制作したものが、ミクモンです。
先日バトル機能を追加しました。よろしかったら遊んでみてください。