【CASA】nフレーム後に関数を実行する

やばい、クラスリスト作ったせいで"casaframework"で検索するとめっさ上位に表示されるようになってもーた。
と言うわけで検索キーワードであがってきたものから順に追加していこうかと思ったり。

今回はFrameDelay

コレもさんざん既出なのは無視。

AS2で書いていると、attachで呼び出した直後に呼び出したMovieClipのタイムライン上に配置しているMovieClipのクラスが読み込めてなくて、関数とか呼び出せない時が結構あるわけで・・・

たとえば

Actionscript:
  1. mc:MovieClip = this.attachMovie("hoge", "hoge_mc", 1 );
  2. trace( mc.hogehoge);

(hogehogeってプロパティはあらかじめhogeに設定したクラスで設定されているモノとする。)

こんな感じに書くと、undefinedが帰って来るわけですよ。
これを回避しようと思うと、onEnterFrameとかで1回だけ実行して削除とか、結構めんどくさい事をしなけりゃならんわけ。

つーわけでFrameDelayの出番。

Actionscript:
  1. var _mc:MovieClip = this.attachMovie("hogehoge", "newMc", 1 );
  2. trace( mc.hogehoge); // undefined
  3.  
  4. var delay:FrameDelay = new FrameDelay( this, "init", 1 );
  5. delay.start();
  6.  
  7. function init() {
  8. trace( mc.hogehoge ) //OK
  9. }

(ここでもhogehogeってプロパティはあらかじめhogeに設定したクラスで設定されているモノとする。)

FrameDelay作成時の引数は、一個目から
呼び出す関数があるオブジェクト
呼び出す関数の名前(String)
何フレーム後に実行するか?

FrameDelayのインスタンスを作ったら、後はstartを実行すれば良いだけ。
そしたら指定したnフレーム後に実行されちゃうわけです。

はい楽チン。

タイムラインにスクリプト書いてたらあんまり意識しないところな気がするけど、クラスベースで書いてたら結構使いますね。

こんな感じ。

Leave a reply