時間軸與 ActionScript

上次更新時間 2023年5月24日

您可以使用 ActionScript® 在執行階段控制時間軸。 使用 ActionScript 便可以在 FLA 檔中建立互動效果與其他功能,這是單靠使用「時間軸」所無法做到的。

您可以使用 ActionScript® 在執行階段控制時間軸。 使用 ActionScript 便可以在 FLA 檔中建立互動效果與其他功能,這是單靠使用「時間軸」所無法做到的。

請參閱線上說明中與時間軸和 ActionScript 相關的討論,以了解如何使用 ActionScript 控制「時間軸」。

絕對路徑

絕對路徑是以文件載入的階層名稱做為開始,再依序加上顯示清單中的項目,直到到達目標實體為止。 您也可以使用別名 _root 來指向目前階層中的最高時間軸。 例如,影片片段 california 中指向影片片段 oregon 的動作可以使用絕對路徑 _root.westCoast.oregon

Flash Player 會於階層 0 載入要開啟第一份文件。 您必須為其他所有文件指定要載入的階層編號。 當您在ActionScript中使用絕對參考來參考載入的檔案時,請使用表單_levelX,其中X是檔案載入的層級編號。 例如,在 Flash Player 中開啟的第一份文件叫做 _level0;載入階層 3 的文件則叫做 _level3

若要在不同階層的文件之間通訊,請務必使用目標路徑中的階層名稱。 下列範例顯示portland執行個體如何定位於名為georgia的影片片段中的atlanta執行個體(georgiaoregon處於相同的層級):
_level5.georgia.atlanta

您可以使用 _root 別名指向目前階層中的主時間軸。 對主時間軸來說,當影片片段同時將 _level0 當成目標時,_root 別名就代表 _level0。 對於載入 _level5 的文件來說,當影片片段同時將 level 5 當成目標時,_root 則相當於 _level5。 例如,如果影片片段southcarolinaflorida都載入到同一層級,則從例項southcarolina呼叫的操作可以使用以下絕對路徑來指向例項florida:
_root.eastCoast.florida

相對路徑

相對路徑是以控制時間軸和目標時間軸之間的關係做為基礎。 相對路徑只能在自己的 Flash Player 階層內為目標定址。 舉例來說,當 _level0_level5 上的時間軸做為目標時,您無法在動作指令中使用相對路徑。

在相對路徑中,請使用關鍵字 this 來指向目前階層中的目前時間軸;請使用別名 _parent 代表目前時間軸的父時間軸。 若要在相同 Flash Player 階層內的影片片段階層架構中向上移動一個階層,請重複使用 _parent 別名。 例如,_parent._parent控制階層中兩個層級的影片片段。 任一 Flash Player 階層上的最高時間軸都是唯一具有未定義之 _parent 值的時間軸。

執行個體charleston的時間軸中的動作(位於southcarolina之下的一層)可以使用下列目標路徑來針對執行個體southcarolina:
_parent

若要從charleston的動作以執行個體eastCoast(上一層)為目標,您可以使用下列相對路徑:
_parent._parent

若要從charleston的時間軸中的動作以執行個體atlanta為目標,您可以使用下列相對路徑:
_parent._parent.georgia.atlanta

相對路徑對於重複使用指令碼來說非常有用。 例如,您可以將下列指令碼附加至將父項放大150%的影片片段:
onClipEvent(載入){ _parent._xscale
= 150; _parent._yscale = 150;
}

然後可以將這段指令碼附加到任何影片片段實體上,重複使用。

 Flash Lite 1.0 和 1.1 僅支援將指令碼附加到按鈕, 並不支援將其附加到影片片段。

無論使用絕對路徑還是相對路徑,您都可以在時間軸中識別變數,或是具有點(.)的物件屬性 後接變數或屬性的名稱。 例如,下列陳述式將執行個體表單中的變數name設定為值「Gilbert」:
_root.form.name = 「Gilbert」;

使用絕對及相對目標路徑

您可以使用 ActionScript,將訊息從一個時間軸傳送到另一個時間軸。 包含動作的時間軸稱為「控制時間軸」,收到動作的時間軸稱為「目標時間軸」。 舉例來說,某個時間軸的最後一個影格中可能有一個動作,要求另一個時間軸開始播放。 若要指向某個目標時間軸,您必須使用目標路徑,指出此影片片段在顯示清單中的位置。

以下範例顯示一份名為 westCoast 之文件的階層關係,它在階層 0 上含有三段影片片段:californiaoregon,和 washington。 每個影片片段依次包含兩個影片片段。
層級0(_l) 

        西海岸 

                加利福尼亞 

                        三藩市 

                        貝克斯費爾德 

                俄勒岡 

                        波特蘭 

                        亞士蘭 

                華盛頓 

                        奧林匹亞 

                        埃倫斯堡

就像在網站伺服器上一樣,Animate 中的每個時間軸有兩種定址方法:使用絕對路徑或相對路徑。 實體的絕對路徑一定是從階層名稱開始的完整路徑,不論呼叫動作的時間軸為何;例如,實體 california 的絕對路徑是 _level0.westCoast.california。 從不同位置呼叫的相對路徑不同;例如,從三藩市california的相對路徑為 _parent,而從portland的相對路徑為_parent._parent.california

指定目標路徑

若要控制影片片段、載入的 SWF 檔或按鈕,您必須指定目標路徑。 您可以手動指定目標路徑,或是使用「插入目標路徑」對話方塊或藉由建立可產生目標路徑的運算式來指定。 若要指定影片片段或按鈕的目標路徑,您必須先指定影片片段或按鈕的實體名稱。 載入的文件不需要實體名稱,因為會使用其階層編號做為實體名稱 (例如,_level5)。

將實體名稱指定至影片片段或按鈕

在舞台上選取影片片段或按鈕。
在「屬性」檢測器中輸入實體名稱。

使用插入目標路徑對話方塊來指定目標路徑

選取要指定動作的影片片段、影格或按鈕實體。

這會成為控制時間軸。

在「動作」面板中 (「視窗 > 動作」),前往左側的「動作工具箱」,然後選取需要目標路徑的動作或方法。
在要插入目標路徑的指令碼中,按一下參數方塊或位置。
按一下「指令碼」窗格上方的「插入目標路徑」按鈕。
選取目標路徑模式為「絕對」或「相對」。
在「插入目標路徑」顯示清單中選取影片片段,然後按一下「確定」。

手動指定目標路徑

選取要指定動作的影片片段、影格或按鈕實體。

這會成為控制時間軸。

在「動作」面板中 (「視窗 > 動作」),前往左側的「動作工具箱」,然後選取需要目標路徑的動作或方法。
在要插入目標路徑的指令碼中,按一下參數方塊或位置。
在「動作」面板中輸入絕對或相對目標路徑。

將運算式當做目標路徑使用

選取要指定動作的影片片段、影格或按鈕實體。

這會成為控制時間軸。

在「動作」面板中 (「視窗 > 動作」),前往左側的「動作工具箱」,然後選取需要目標路徑的動作或方法。
執行下列其中一項:
  • 在參數方塊中輸入運算結果為目標路徑的運算式。

  • 請按一下滑鼠按鍵,在指令碼中置入插入點。 接著,請在「動作工具箱」的「函數」類別中連按兩下 targetPath 函數。 targetPath 函數會將影片片段的參考轉換為字串。

  • 請按一下滑鼠按鍵,在指令碼中置入插入點。 接著,請在「動作工具箱」的「函數」類別中選取 eval 函數。 eval 函數會將字串轉換為用來呼叫 play 等方法的影片片段參考。

    下面的指令碼會將值 1 指定給變數 i。 該指令碼接著便會使用 eval 函數來建立影片片段實體的參考,並將其指定給變數 x。 變數 x 現在為影片片段實體的參考,可以對 MovieClip 物件的方法進行呼叫。

    i = 1; x = eval("mc"+i); x.play(); // this is equivalent to mc1.play();

    您也可以使用 eval 函數直接呼叫方法,如下範例所示:

    eval("mc" + i)。play();