トップ > Action Script 3.0 > カスタムイベントのサンプルを作ってみた

カスタムイベントのサンプルを作ってみた

AS3では欠かせない機能になってくるのかな?
いまいちよく理解できない「カスタムイベント」。

避けて通ることはできないだろうと、覚悟を決めてサンプルを作ってみた。

サンプル

このサイトをご覧頂くには最新の Flash Player Plug-in をお使いのブラウザにインストールする必要があります。
Flash Player Plug-in はこちらからダウンロードする事が出来ます(無料)。

まぁ、これだけじゃさっぱり見えてこないと思うのでソースを下記に。

Main.as


package {
	
	//クラス読み込み
	import flash.display.StageScaleMode;
	import flash.display.StageAlign;
	import flash.display.Sprite;
	import flash.text.TextField;
	import flash.text.TextFieldAutoSize;
	import flash.events.Event;
	import CustomEvent;
	
	public class Main extends Sprite {
		
		private var CE:CustomEvent;
		private var TXT:TextField;
		
		//コンストラクタ
		public function Main() {
			
			//ステージサイズ設定
			stage.scaleMode = StageScaleMode.NO_SCALE;
			stage.align = StageAlign.TOP_LEFT;
			
			//カスタムイベントクラス生成
			CE = new CustomEvent(stage);
			//カスタムイベントのリスナー生成
			CE.addEventListener(CustomEvent.CUSTOM_EVENT, onCustomEvent);
			
			//確認用テキストフィールド作成
			TXT = new TextField();
			with (TXT) {
				x = 60;
				y = 20;
				autoSize = TextFieldAutoSize.LEFT;
				text = "結果表示";
				mouseEnabled = false;	//マウスイベントを受け取らなくする
			}
			addChild(TXT);
			
		}
		
		//カスタムイベント
		function onCustomEvent(e:Event) {
			TXT.text="カスタムイベント発生";
		}
	}
}

これがメインのソース。


import CustomEvent;
:
:
//カスタムイベントクラス生成
CE = new CustomEvent(stage);
//カスタムイベントのリスナー生成
CE.addEventListener(CustomEvent.CUSTOM_EVENT, onCustomEvent);

まずは「CustomEvent」というクラスを用意。クラスを生成してイベントリスナーを設定する。ちなみに「CustomEvent」クラスにてオブジェクトを生成したいので、stage を引き渡しておく。

CustomEvent.as


package {
	
	//クラス読み込み
	import flash.display.Stage;
	import flash.events.EventDispatcher;
	import flash.events.Event;
	import flash.display.Sprite;
	import flash.events.MouseEvent;
	
	public class CustomEvent extends EventDispatcher {
		
		//カスタムイベント名
		public static const CUSTOM_EVENT:String = "custom_event";
		//スプライト
		var SP:Sprite;
		
		//コンストラクタ
		function CustomEvent(ST:Stage) {
			
			//スプライト生成
			SP = new Sprite();
			with (SP) {
				x = 30;
				y = 30;
				graphics.beginFill(0xFF9900);
				graphics.drawCircle(0, 0, 20);
				graphics.endFill();
				buttonMode = true; //スプライトをボタンとして動作させる
				addEventListener(MouseEvent.CLICK, btnClick);
			}
			ST.addChild(SP);
			
		}
		//クリック処理
		function btnClick(e:MouseEvent):void {
			btnClickCustomEvent();
		}
		//カスタムイベントの送信
		function btnClickCustomEvent():void {
			trace("カスタムイベントの送信")
			dispatchEvent(new Event(CUSTOM_EVENT));
		}
	}
}

こちらがカスタムイベント用のクラス。


public class CustomEvent extends EventDispatcher {

カスタムイベントのクラスは、「EventDispatcher」を継承する必要がある。


//カスタムイベント名
public static const CUSTOM_EVENT:String = "custom_event";
:
:
//カスタムイベントの送信
function btnClickCustomEvent():void {
	dispatchEvent(new Event(CUSTOM_EVENT));
}

あとは、カスタムイベント名を設定し、イベント発生のメソッドを用意。dispatchEvent() メソッドでカスタムイベント名を指定すればOK。Main.as で設定した「CUSTOM_EVENT」リスナーが実行される。

ふーむ。難しい…。

何となくもっとスマートが書き方があるような気がしてならない…orz

この記事をブックマークしておく

コメント:0

コメント投稿

コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。

この情報を記憶する

トップ > Action Script 3.0 > カスタムイベントのサンプルを作ってみた

記事検索
カテゴリ
RSSフィード

このページの先頭へ戻る