Progressionで自作コマンドを作っていて、ちょっとひっかかったところ。CastButtonなどの中にあるaddCommandの中でスコープを受け渡す方法です。

例えばCastButtonクラスの中で、
protected override function _onCastMouseDown():void 
{
addCommand(
HogeCommand( this )
);
}
みたいな感じでCastButtonクラスへの参照を渡そうとすると失敗します。
protected override function _onCastMouseDown():void 
{
var scope = this;
addCommand(
HogeCommand( this )
);
}
も案の定ダメ。さて、正解(?)は・・・
protected override function _onCastMouseDown():void 
{
var hoge:HogeCommand= new HogeCommand();
hoge.scope = this;
addCommand(
hoge
);
}


こうすると、HogeCommandクラス内のscope変数でCastButtonの参照が取れます。Commandクラスにあらかじめscopeという変数が用意されていました。でも説明ないし、あんまりこの件扱った記事も少ないのは、単に自分のCommandクラスへの理解が足りないのか。デザインパターンちゃんと勉強しよう、というメモ。