アニメーションを制御するときに fla のフレームに as を書いてしまうと途端に作業効率が下がってしまいます。とくにチームとしての効率が。

そこで、Flash のシンボルを Flex コンポーネントにすることで、アニメーションと as を極力分離します。

タイムラインに、ラベルを指定します。
そしてタイムライン終了時にフレームに記述するのは、

gotoAndStop();
this.dispatchEvent(new Event(Event.COMPLETE));

これだけにします。外からこのコンポーネントに対して

gotoAndPlay("hoge")

と実行すれば、アニメーションが再生され、gotoAndStop() のタイミングで、COMPLETE が発送されます。

爆速シリーズでおなじみの弊社 嶋田が作成したタイムラインベースのアニメーションを Flex コンポーネントにしてつかってみました。

デモ1

左上のボタンをクリックするとジャンプします。

<?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 してあげるだけ。

デモ2

アニメーションを本体から分離することで、分業が可能となり、作業効率が上がる仕組みです。
fla ファイルの肥大化も避けられますし、大きくなりすぎたファイルが壊れたら悲しすぎます。

さてさて、実際にこのような手法で制作したものが、ミクモンです。
先日バトル機能を追加しました。よろしかったら遊んでみてください。

Mixi アプリ ミクモン
http://mixi.jp/run_appli.pl?id=6769

HTML5飯