March 21, 2006
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自身)
}
}