多分8時間ぐらいハマった。
addEventListenerでTIMER_COMPLETE時に
実行される関数へ値を渡したい。
が、やり方分からん。。
var timer:Timer = new Timer(1000,1);timer.addEventListener(TimerEvent.TIMER_COMPLETE,test);
function test(e:TimerEvent):void {
trace(e.target);
}
traceの結果は、
[object Timer]
Timerオブジェクトに値を持たそうと↓なことをしても、
var timer:Timer = new Timer(1000,1);
timer.aaa = "aaaaaa";
コンパイルエラーになるし。。
ということで、
package {import flash.utils.Timer;
public class TimerCustom extends Timer {
public var mc:String;
public function TimerCustom(timer:Number,timerComplete:Number) {
super(timer, timerComplete);
}
}
}
と、Timerクラスを継承??して、プロパティーを持たせてみた。
var timer:TimerCustom = new TimerCustom(100,1);timer.aaa = "aaaaaa";
timer.addEventListener(TimerEvent.TIMER,test);
function test(e:TimerEvent):void {
trace(e.target);
trace(e.target.aaa);
}
traceの結果は、
[object Timer]
aaaaaa
何とか目的を達成!
AS2.0のDelegateクラスがAS3.0で使えなくなっているらしく、
イベントのスコープが変えれなくて悩みまくりました。
色々調べてたら
「Function.apply」というキーワードを見つけて、
これを上手く使ったらもっと簡単に出来るのかもしれない。
が、addEventListenerイベントでは、
どうしても動作しなかったです。
謎。
comments
同じことで、悩んでました!
クラスの拡張すればよかったんですね。ありがとう!