currentLabelで現在のフレームのラベル名の取得をやってみた ActionScript3.0
AS3からフレームのラベル名へのアクセスが可能になった
- currentLabel: 文字列で現在のフレームのラベル名を取得
- currentLabels: タイムライン上のラベル情報を配列で取得する
以下、
俺なりに【使用例】と【注意点】そして【いろいろ検証】をまとめたものです
【使用例】
新しいMovieClipをつくり、タイムラインを設定しました
this.stop(); // 1フレーム目で止める // 文字列で現在のフレームのラベル名を取得 trace(currentLabel); // label_A を出力 // ライムラインのラベル情報を配列で取得する trace(currentLabels[0].name); // label_A を出力 trace(currentLabels[1].name); // label_B を出力 trace(currentLabels[2].name); // label_C を出力 // 該当ラベルのフレームを取得 trace(currentLabels[0].frame); // 1 を出力 trace(currentLabels[1].frame); // 13 を出力 trace(currentLabels[2].frame); // 25 を出力 // ラベル総数 trace(currentLabels.length); // 3 を出力
- 赤: label_A (01 〜 12)
- 黄: label_B (13 〜 24)
- 青: label_C (25 〜 36)
ということは、フレーム(21)はラベル名「label_B」である
だが、currentLabels[1].frameで取得できるのは「13」だ
そう、ラベルの先頭フレームになる。13フレーム目だけが「label_B」ではないということです
gotoAndStop(totalFrames); // 最後のフレームにする addEventListener(Event.ENTER_FRAME, funtion (e: Event): void { prevFrame(); // 前のフレームに戻る if (currentLabel == "label_B") { trace("label_Bに到達したフレーム", currentFrame); removeEventListener(Event.ENTER_FRAME, animetionControl); } if (currentFrame <= 1) gotoAndStop(totalFrames); // 一応、繰り返しのため });
- フレーム逆再生にするから意味がある検証なので矢印の方向に流します
- label_BのフレームにきたらENTER_FRAMEイベント削除する
【出力結果】
label_Bに到達したフレーム 24
キーフレームではなく、ラベル名のフレーム範囲に入ったら処理されちゃいました
ん、ちょいまてよ。こうするとどうだ?
label_Bに到達したフレーム 24
ん?空じゃだめ?
挿入したキーフレームに「dummy」とラベル名をつける
【出力結果】
label_Bに到達したフレーム 13
これだっ!
AS2ではできなかっらラベルへのアクセスがとっても便利
次はこれやってみよ
addFrameScript
前から思っていましたが、
フレームの開始が"1"なのが気に入らないぞクルァ!!