將影片片段傳送至新的影格是一項簡單的工作。只要呼叫
gotoAndPlay()
或
gotoAndStop()
其中一種,就可以讓影片片段跳至指定為參數的影格編號。另一種方式是,您可以傳遞一個與影格標籤名稱相符的字串。您可以為時間軸上的任何影格指定標籤。如果要執行這項作業,請在時間軸上選取一個影格,然後在「屬性」檢測器的「影格標籤」欄位中輸入名稱。
使用影格標籤取代影格編號的優點,在建立複雜的影片片段時特別明顯。當動畫中的影格、圖層和補間的數量愈來愈多時,您可以考慮為重要的影格加上標籤,用來詳細描述影片片段行為的變化 (例如,「靜止」、「走動」或「跑動」)。這種方式可提高程式碼的可讀性,同時也提供了更大的彈性,因為 ActionScript 呼叫而前往已加上標籤之影格的是指向單一參考 (標籤) 的指標,而不是特定的影格編號。如果您稍後決定將動畫的特定部分移到不同的影格,那麼只要在新位置中為這些影格保留相同的標籤,就不需要變更 ActionScript 程式碼。
為了在程式碼中顯示影格標籤,ActionScript 3.0 還包括了 FrameLabel 類別。此類別的每個實體都代表單一影格標籤,而且具有代表影格標籤名稱 (在「屬性」檢測器中指定) 的
name
屬性,另外還有代表影格數目的
frame
屬性,該影格的標籤是放置在時間軸上。
為了存取與影片片段實體關聯的 FrameLabel 實體,MovieClip 類別包括會直接傳回 FrameLabel 物件的兩個屬性。
currentLabels
屬性會傳回陣列,其中含有橫跨整個影片片段時間軸的所有 FrameLabel 物件。
currentLabel
屬性則會傳回字串,其中包含最近在時間軸上所遇到的影格標籤名稱。
假設您已建立影片片段
robot
並且為它的一些動畫狀態加上標籤,您可以設定一個條件來檢查
currentLabel
屬性,以存取目前
robot
的狀態,如下列程式碼所示:
if (robot.currentLabel == "walking")
{
// do something
}
Flash Player 11.3 和 AIR 3.3 為 FrameLabel 類別新增了
frameLabel
事件。您可以將事件處理常式指定給代表影格標籤的 FrameLabel 實體。當播放磁頭進入影格時,會傳送事件。
下列範例會在 MovieClip 的影格標籤陣列中,為第二個影格標籤建立 FrameLabel 實體。然後,為
frameLabel
事件註冊事件偵聽程式:
var myFrameLabel:FrameLabel = robot.currentLabels[1];
myFrameLabel.addEventListener(Event.FRAME_LABEL, onFrameLabel);
function onFrameLabel(e:Event):void {
//do something
}