WEB/システム/IT技術ブログ

ActionScript3でaddEventListenerの関数に引数

ActionScript3ではイベントリスナーを多様するのですが、そのイベントリスナーで指定する関数に引数を渡したくて、少し調べてみました。

これを単純に実装しようとすると、以下のようにグローバルな値経由で無名関数の中に値を参照させることができるみたいです。

this.x = "てすと";
mc.addEventListener(Event.RESIZE, function(){
	trace(this.x);
});

結果はデバッグで「てすと」が出力されます。

しかし、これだと無名関数のためイベントの解除が難しそうです。さらには、関数が流用できないという欠点があります。

調べるとすぐに見つけることができたのですが、ActionScript3では以下のような記述が可能なようです。

this.x = "てすと";
mc.addEventListener(Event.RESIZE, test(this.x));
	function test(x:String) {
	return function(e) {
		trace(this.x);
	}
}

結果は先ほどの記述の同じです。この方法だと、関数testに引数を渡すこともできて、イベントの解除もできます。さらには関数testを流用することもできます。

他のプログラムではちょっとお目にかからない記述ですね。Flashをやる上では憶えておきたいテクニックです。

B!

Comment

コメントはありません

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

Monthly Archives