スマートフォンやhtml5+CSS3など新技術に四苦八苦。jQuery、AjaxなどJavaScriptも難しいですね。そんなWebに悩む人のネタ帳です。

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をやる上では憶えておきたいテクニックです。

このエントリーをはてなブックマークに追加

Comment

Comment Form

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

Monthly Archives

Search