feb19.jp

Nobuhiro Takahashi
Designer / Engineer

AS3でEventDispatcherを使う

AS3でEventDispatcherを使う

AS3でカスタムイベントを作るにはEventDispatcherを使います。

個人的にはAS2のAsBroadcasterの方がシンプルで使いやすかったのになぁ、とか思いつつ、多分これよりいろんな用途があるんだろうな、と。まぁまずAS3ではイベント処理の仕方が根本的に変わったしね。

という訳でEventDispatcherを使ったカスタムイベントのサンプルです。こちら。

フレームアクション

var e = new EventDispatchTest(this);
e.addEventListener(EventDispatchTest.PUSH, onPushHandler);
function onPushHandler(e:Event){
	trace("done");
}

EventDispatchTest.as

package {
	import flash.events.*;
	import flash.display.*;
	public class EventDispatchTest extends EventDispatcher {
		public static const PUSH:String = "push_btn";
		private var basemc:MovieClip;
		public function EventDispatchTest(mc) {
			basemc = mc;
			init();
		}
		private function init():void {
			var btn = basemc.btn;
			btn.buttonMode = true;
			btn.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDownHandler);
		}
		private function onMouseDownHandler(e:MouseEvent):void {
			eventDispatch();
		}
		private function eventDispatch():void {
			dispatchEvent(new Event(PUSH));
		}
	}
}

Flashのオーサリング環境のステージ上に「btn」というインスタンスを作ってから上をコピペなり実行してください。

EventDispatchTestクラスから、「PUSH」イベントが呼ばれたら、「done」と出力する仕組みです。EventDispatchTestクラスの中では、btnに対してマウスイベントを設定していて、クリックしたときに「PUSH」イベントを発生するようにしています。

これを応用して、XMLのロードやパースを他のクラスに分担してもらって、XMLの処理が終わったら、カスタムイベントをメインのクラスに送信して、メインのクラスで処理済みデータから、表示を始めるといったものを作ることができます。

Navigation

prev: AS3で外部のSWFをロードする処理
next: AS3でTweenを使う

Recently Entries