読者です 読者をやめる 読者になる 読者になる

Shut the fuck up and write some code

グダグダ言わずにコードを書きたいブログ

AS2のイベント駆動処理

flashlite2.0 AS2

仕事にてメインのプログラマの方ははAS3ライクなイベント駆動処理を書かれてたんですが、FL1.1上がりの自分にはよくわからないままところが多いので、サンプルつくってメモを残します。


■テスト用クラス testEvent.as

import mx.events.EventDispatcher;
import Event

class testEvent extends EventDispatcher{
	
	public function test() :Void{
		
		trace("function testを実行")
		var e:Event = new Event()
		e.type = Event.test
		e.name = "test1"
		dispatchEvent(e)
		
	}
	
	public function test2() :Void {
		
		trace("function test2を実行")
		var e:Event = new Event()
		e.type = Event.test2
		e.name = "test2"
		dispatchEvent(e)
		
	}
	
} 


■イベント定数クラス Event.as

dynamic class Event {
	
	public static var test:String = "test"
	public static var test2:String = "test2"
	
}


■実行

import Event

var test:testEvent=new testEvent()

/*ハンドラを登録*/
function ontest(e:Event):Void{ 
	trace("ハンドラevent_end1を実行")
	trace("引数:" + e.name)
	test.removeEventListener(Event.test2, ontest2)
}

function ontest2(e:Event):Void{
	trace("ハンドラevent_end2を実行")
	trace("引数:"+e.name)
}

/*実行*/
test.test()

/*リスナを登録*/
test.addEventListener(Event.test, ontest)
test.test()

/*リスナを消す*/
test.removeEventListener(Event.test, ontest)
test.test()

/*test2を実行*/
test.addEventListener(Event.test2, ontest2)
test.test2()


EventDispatcherを継承。これが手っ取り早いっぽい。オブジェクト作ってあげてそこにイベントタイプやら引数やら突っ込んであげてdispatchEventで受け渡させばaddEventListenerで登録していたハンドラが動く。このサンプルではダイナミックなクラスEventを用意して、オブジェクト作ってプロパティ作りたい放題に。

合っているのかどうなのかさっぱりわかりませんがとりあえず動く。動作保障はしませんよ・・・。
細かいところで問題ありそうなので分かったらあとでまたフォローします。

しかし調べてもAS3での例しか出てきませんね・・・しんどい!