AS3の「メソッドクロージャ」が実はとても役立つことがわかった。

関数スコープ — Flex 2

メソッドクロージャ
ActionScript 3.0 では、元のオブジェクトインスタンスを自動的に記憶するメソッドクロージャが有効です。この機能はイベント処理に役立ちます。ActionScript 2.0 では、メソッドクロージャに抽出元のオブジェクトインスタンスが記憶されず、メソッドクロージャが呼び出されたときに予期しない動作が発生しました。mx.utils.Delegate クラスは一般的な方法でしたが、不要になりました。

Flex2/ActionScript3.0/関数 – PukiWiki

* 関数をクラスの一部として定義した場合と、インスタンスに関連付けた場合はメソッドと呼ぶ。
* それ以外の方法で定義された場合はメソッドクロージャと呼ぶ

上から2つ目のtrace(this)の結果 “[object MainTimeline]” がメソッドクロージャの効果。

/* ActionScript3 */

Tweener.addTween(this._btnMc, {alpha: 0.5, time:1, onComplete: function():void{trace(this);}});
//結果: [object MovieClip] (addTweenで扱ったオブジェクト)

Tweener.addTween(this._btnMc, {alpha: 0.5, time:1, onComplete: this.onCompleteFunc});
private function onCompleteFunc():void{
trace(this);
}
//結果: [object MainTimeline] (addTween呼び出し元のthis)

AS2ではこうならなかった。

/* ActionScript2 */

Tweener.addTween(this._btnMc, {_alpha: 50, time:1, onComplete: function():Void{trace(this);}});
//結果: _level0.btn_mc (addTweenで扱ったオブジェクト)

Tweener.addTween(this._btnMc, {_alpha: 50, time:1, onComplete: this.onCompleteFunc});
private function onCompleteFunc():void{
trace(this);
}
//結果: _level0.btn_mc (addTweenで扱ったオブジェクト)


“closure”の検索結果(221 件):英辞郎 on the Web:スペースアルク

closure
【名】

1. 〔商売{しょうばい}や行為{こうい}などの〕閉鎖{へいさ}、撤退{てったい}
・The closure of the park was due to it being a fire hazard. : その公園の閉鎖は、火災の危険性があるためだった。
2. 封鎖{ふうさ}、通行止め
3. 〔空いているところを〕閉める[閉じる]もの[道具{どうぐ}]
4. =cloture《心理学》閉合{へいごう}
5. 《地学》垂直距離{すいちょく きょり}◆【同】amount of closure
6. 《言語学》〔音声学{おんせいがく}の〕閉鎖{へいさ}
7. 《数学》〔ある演算{えんざん}に関して〕閉じていること

- 関連エントリー
Delegate.create