無名関数[ActionScrip2.0]

traceしてもkey_mameが取れないといった現象が起きた

_root.sampple.onPress = function():Void {
	for (var key_mame:String in genre) {
		//fusekitのalphaToでボタンのalphaを0にした後、ボタンを消す
		_root[key_mame].alphaTo(0, 1, 'linear', 0, function ():Void{
			trace(key_mame);
			removeMovieClip(_root[key_mame]);
		});
	}
}

これでkey_mameが取れました。これが無名関数ってやつですか!?

_root.sampple.onPress = function():Void {
	for (var key_name:String in genre) 
	{
		//fusekitのalphaToでボタンのalphaを0にした後、ボタンを消す
		var evtAdder = function(key_name:String){
			_root[key_name].alphaTo(0, 1, 'linear', 0, function ():Void{
				trace(key_mame);
				removeMovieClip(_root[key_name]);
			});
		}
		evtAdder(key_name);
	}
}

こんな感じにも書けるらしいです(実証してません)

_root.sampple.onPress = function():Void {
	for (var key_name:String in genre) 
	{
		//fusekitのalphaToでボタンのalphaを0にした後、ボタンを消す
		(function(key_name:String):Void{
			_root[key_name].alphaTo(0, 1, 'linear', 0, function ():Void{
				trace(key_mame);
				removeMovieClip(_root[key_name]);
			});
		})(key_name);
	}
}

追記(20078/05/11)

beinteractiveさんに、このページは、「変数のスコープとかアクチベーションオブジェクトの話」ですよーとご指摘いただきましたっ!!ありがとうございます!
soundkitchenさんもツッコミありがとでしたっ!ちょーうれしいです、つっこまれるのv(≧∇≦)
こんな素敵な解説図まで頂きましたっ♪

anonfunc.png


Comment



Counter: 6455, today: 3, yesterday: 3

添付ファイル: fileanonfunc.png 927件 [詳細]

トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-09-24 (火) 14:56:04 (1395d)