mx.utils.Delegateの使い方(スコープの指定)
actionscriptでいろいろごにょごにょやってるうちにスコープが訳わからなくなったりとか、ここのthisスコープはこれじゃあんわーって感じのときとかに使うといい感じ。
//_rootフレームアクション mcA.onPress = pressA; function pressA() { trace(this);//output '_root.mcA' }import mx.utils.Delegate; mcB.onPress = Delegate.create(this, pressB); function pressB() { trace(this);//output '_root' }
とりあえず使うときはこんな感じで。
setIntervalで使うときは
import mx.utils.Delegate;
setInterval(Delegate.create(this, intervalAction), 1000);
function intervalAction() {
trace(this);
}
こんな感じで。
このDelegateはフレームアクションで使っても余りメリットというものがなく、クラス内で使うと幸せになれる。
import mx.utils.Delegate; class A { function A(mcA:MovieClip, mcB:MovieClip) { mcA.onPress = runA; mcB.onPress = Delegate.create(this, runB); } /** mcAで実行するfunction */ function runA() { trace(this);//output: "mcA" } /** mcBで実行するfunction */ function runB() { trace(this);//output: "object : Object"(クラスA自身) } }