カテゴリー
Flash

ActionScript 2.0 Delegate クラスで 関数のスコープ自由自在

Delegate クラスって知ってますか? 最近ま…

Delegate クラスって知ってますか?

最近まで知らなかったのですが、Flash 6からというかActionScript 2.0にあるクラスです。
メソッドは1つしかなくて

Delegate.create() 特定のスコープ内で関数を実行するための静的メソッドです」

ちょっと理解するのがややこしいのですが、普通はFunctionの中でのthisと自分の中のthisは違うモノとして扱われますが、このDelegateを使うと参照させたいスコープでその関数を実行出来ます。

例えば

import mx.utils.Delegate;

function test(t){
trace(this);
trace(t);
}

var _vars = new LoadVars();
_vars.onData = Delegate.create(this, test);
_vars.load("test.txt");

こんな感じ

evalなどと同じで、乱発すると余計に混乱しますが、プロジェクトの最終段階での軌道修正的な案件(?)などでは威力を発揮しそうです。

(kani君ありがとう)