イベント発行可能なクラスを作成する

(サンプル一覧を表示する)

イベント発行可能なクラスは、 EventDispatcher クラスを継承して作ります。
下のコード例は数値のカウンターのクラスです。指定した値に達した時、イベントを発行するようになっています。
Flash の実行画面
イベント発行可能なクラスを作成する

Flashプレーヤーが入っていないか、JavaScriptが無効になっているようです。

Get Adobe Flash player

イベント発行可能なクラスを作成する

ソースコード

package  
{
	import flash.events.Event;
	import flash.events.EventDispatcher;
	
	/**
	 * カウンタがしきい値に達した時に呼び出される.
	 * <p>
	 * オブジェクトが発行するイベント一覧をこのようにクラスの宣言前に書いておくと、
	 * 他の場所から MyCounter の addEventListener() を使用する時にコード補完が効きます。
	 * asdoc 出力時もこのコメントの内容が使われます。
	 * </p>
	 * <p>
	 * ここでは、asdoc 用に HTML の p タグを使用して段落を入れています。
	 * 改行タグやリストタグ等も使用可能です。
	 * コード補完のみを使用する場合は特にタグを入れる必要はありません。
	 * </p>
	 * @eventType Event.COMPLETE
	 */
	[Event(name = "complete", type = "flash.events.Event")] 
	
	/**
	 * 数値カウント用クラス.
	 * しきい値に達するとイベントを発行します。
	 * @author Hikipuro
	 */
	public class MyCounter extends EventDispatcher
	{
		/**
		 * カウンターのしきい値.
		 * この値に達した時、イベントを発行する
		 */
		private var _threshold:uint;
		
		/**
		 * カウンターの現在値.
		 * 初期値は 0。
		 */
		private var _current:uint;
		
		/**
		 * コンストラクタ.
		 * @param	threshold	しきい値
		 */
		public function MyCounter(threshold:uint) 
		{
			// 変数の初期化
			_threshold = threshold;
			_current = 0;
		}
		
		/**
		 * カウントする.
		 * 値を指定しなかった場合、現在のカウント値に 1 が足される。
		 * カウンタがしきい値に達した時、 Event.COMPLETE イベントを発行する。
		 * @param	value
		 */
		public function increment(value:uint = 1):void 
		{
			// カウンタ更新
			_current += value;
			
			// しきい値を超えたらイベント発行
			if (_current >= _threshold) {
				var event:Event = new Event(Event.COMPLETE);
				dispatchEvent(event);
			}
		}
		
		/**
		 * カウンターのリセット.
		 * 現在のカウント値を 0 にします。
		 */
		public function reset():void 
		{
			_current = 0;
		}
	}
}
		

ActionScript では C++ のような多重継承が不可能なので、 EventDispatcher を継承することが難しい時もあると思います。
その場合、継承の代わりに IEventDispatcher インターフェイスを実装するような形にします。 IEventDispatcher インターフェイスを使う時は、イベントを発行する側のクラスの中に EventDispatcher オブジェクトを包含するようにしてください。詳しいコード例は Adobe の IEventDispatcher のリファレンスページに書かれています。

このサンプルでは、継承する方の使い方でコードを書いています。

外部リンク