2008/10/24 | 16:56 pm

クラス間のカスタムイベント

クラス間でのイベントのやり取りをするとき、
AS2.0だと BroadcasterMX を使ってましたけど、
ざらっと見た感じ、AS3.0だとそれ、無さそう。。。

そもそも名前が ****MX だもんね、
そりゃーないよね。。。

っで、AS3.0だと dispatchEvent が一番わかりやすそうで、
しっくり来そうな感じデス。

あと、Document Class を Singleton で作るってのも暇があれば試してみたい。

-
ドキュメントクラスをSingletonとして扱う : blog.nium.jp
ステージの参照とシングルトン : SCRATCHBRAIN.BLOG
-

とりあえず dispatchEvent の簡単な使い方を。
(以下は今回のTOP変更で使ったものの抜粋です)

Index.as

package {
	import DisplacementEffect;

	public class Index {

		private var main:MovieClip;
		private var effect:DisplacementEffect;

		public function Index(main:MovieClip):void {
			this.main = main;
			effect = new DisplacementEffect();

			init();
		};

		private function init():void {
			effect.start();
			effect.addEventListener(DisplacementEffect.EFFECT, onReturnHandler);
		};

		private function onReturnHandler(e:Event):void {
			trace("Effect しゅーりょー");
		};

	};
};

DisplacementEffect.as

package {
	public class DisplacementEffect extends Sprite {

		public static const EFFECT:String = "****"; // ****は何でもOK

		public function DisplacementEffect():void {
			init();
		};

		private function init():void {
			// ここで Effect の初期化
		};

		public function start():void {
			// ここで Effect の動き
		};

		// 動きが終わったら呼ばれる function
		private function stop():void {
			dispatchEvent( new Event( EFFECT ) );
		};

	};
};

とすると、DisplacementEffect.as の stop() が呼ばれたすぐあとに、
trace(”Effect しゅーりょー”); が呼ばれます。

注意事項は、クラス間で EFFECT と名前付けたイベント名は全部共通にすること。
それと、このイベント名は任意だけど、頭文字は大文字じゃないとダメ。

ちゃんとコードまとめたら公開しよう。。。。

COMMENT

CATEGORY

POSTED

jam





JUN NAKAJIMA
Tokyo, Japan.
member of Onawatobi.
contact@brooklyn.jp