« FLASH HACKSという本 | main | 平城遷都1300年祭 マスコットキャラ »

メモ Timerクラスを拡張?

2008年02月28日

多分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イベントでは、
どうしても動作しなかったです。

謎。

trackbacks

trackbackURL:

comments

  • fuji
  • 2009年12月24日 14:01

同じことで、悩んでました!
クラスの拡張すればよかったんですね。ありがとう!

comment form
Adobe Flash CS3 詳細! ActionScript 3.0 入門ノート (DVD-ROM付)
クラスで書けるようになった。配列のpushとかspliceとかsliceとかややこしい部分の辞書代わりにも使ってます。XML関係もこれで覚えた。
ActionScript 3.0 アニメーション
vx,Math,cos,sinとか???な数学的な部分をこの本で理解できた気がします。逃げたいジャンルだけどFLASHに必須なジャンルなのよね。。
Adobe Flash CS3 詳細! ActionScript3.0入門ノート2 (CD-ROM付)
ActionScript応用への第一歩。ただこれを読む前に入門ノート1を先に読んでおいた方がよさそう。ASの世界が広がった気がする本です。
Flash Creative Workshop
FLASHを始めて右も左も分からない時に救世主となった本。FLASHサイト制作法がなるほど!っと。ActionScriptバリバリの人はスルー。
FLASH OOP for ActionScript 3.0
FLASHの「今の主流」を知ることが出来る本。筆者の方々は総勢10人以上でかつ現在活躍中の方々ばかりなんでミーハー的な読み方もありかも。