ムービークリップを新しいフレームに進めるのは簡単です。
gotoAndPlay()
または
gotoAndStop()
を呼び出すと、ムービークリップはパラメーターで指定されたフレーム番号までジャンプします。あるいは、フレームラベルの名前と同じ文字列を渡すこともできます。 タイムライン上の任意のフレームに、ラベルを割り当てることができます。 ラベルを設定するには、タイムライン上のフレームを選択して、プロパティインスペクターの フレーム「ラベル」フィールドに名前を入力します。
複雑なムービークリップを作成する場合を考えると、番号の代わりにフレームラベルを使用する利点は明らかです。 アニメーションのフレーム、レイヤー、およびトゥイーンの数が大きくなる場合は、重要なフレームにムービークリップの動作を表す説明として「オフ」、「ウォーキング」、または「ランニング」などのラベルを付けるようにしてください。ラベル付きフレームに移動する ActionScript 呼び出しは、指定のフレーム番号ではなく単一の参照、つまりラベルに対するポインターであるため、読みやすさと柔軟性が向上します。アニメーションの特定のセグメントを、後から別のフレームに移動する場合でも、移動先のフレームに対して同じラベルを使用する限りは、ActionScript コードを変更する必要はありません。
コードのフレームラベルを表示するため、ActionScript 3.0 には FrameLabel クラスがあります。 このクラスの各インスタンスは単一のフレームラベルを表し、プロパティインスペクターで示されるフレームラベル名を表す
name
プロパティと、タイムライン上でラベルが配置されているフレームの番号を表す
frame
プロパティがあります。
ムービークリップインスタンスに関連付けられている FrameLabel インスタンスへのアクセスを可能にするため、MovieClip クラスには FrameLabel オブジェクトを直接返すプロパティが 2 つあります。
currentLabels
プロパティは、ムービークリップのタイムライン全体のすべての FrameLabel オブジェクトで構成される配列を返します。
currentLabel
プロパティは、タイムラインで最後に到達したフレームラベルの名前を文字列で返します。
ロボット(robot)
という名前のムービークリップを作成し、そのアニメーションの様々な状態にラベルを付ける場合を考えます。次のコードでは、
currentLabel
プロパティをチェックする条件を設定して、
ロボット
の現在の状態を確認しています。
if (robot.currentLabel == "walking")
{
// do something
}
Flash Player 11.3 および AIR 3.3 では、FrameLabel クラスに
frameLabel
イベントが追加されています。フレームラベルを表す FrameLabel インスタンスにイベントハンドラーを割り当てることができます。このイベントは、再生ヘッドがフレームに入ると送出されます。
次の例では、MovieClip のフレームラベルの Array に、2 番目のフレームラベルの FrameLabel インスタンスを作成します。次に、
frameLabel
イベントのイベントハンドラーを登録します。
var myFrameLabel:FrameLabel = robot.currentLabels[1];
myFrameLabel.addEventListener(Event.FRAME_LABEL, onFrameLabel);
function onFrameLabel(e:Event):void {
//do something
}