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"なのが気に入らないぞクルァ!!