[FlashDevelop] クロージャ内のデバッグ

2011 年 7 月 22 日 Categories: ActionScript 3.0, FlashDevelop | Tags: ,

FlashDevelopのデバッガでは、クロージャ(関数内関数)で外側のメソッドのローカル変数やクラスのメンバを参照して、その値を確認することができない。

		public function test() {
			var timer:Timer = new Timer(50);
			
			timer.addEventListener(TimerEvent.TIMER,
				function (e:TimerEvent):void {
					// クロージャ内のローカル変数は参照できる
					var str:String = "82319fed-f98e-4606-9a05-61b208a29314";
				}
			);
			
			timer.start();
		}

上記の場合、クロージャ内のローカル変数strは参照できるが、外側のtest()のローカル変数timerやthisは参照できない。

ただし、引数のeからe.target/ e.currentTarget経由でthisを参照することができる。デバッグ時にthisを参照できなくて困ったというときに試してみよう。