您可以使用 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 (load) {    _parent._xscale 
= 150;    _parent._yscale = 150; 
}

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

註解:

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

不管您使用的是絕對還是相對路徑,都必須找出時間軸中的變數,或是帶有點 (.) 且後面接著變數或屬性名稱的物件屬性。例如,下面的陳述式會將實體 form 中的變數 name 設為值 "Gilbert"

_root.form.name = "Gilbert";

使用絕對及相對目標路徑

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

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

_level0 
        westCoast 
                california 
                        sanfrancisco 
                        bakersfield 
                oregon 
                        portland 
                        ashland 
                washington 
                        olympia 
                        ellensburg

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

指定目標路徑

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

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

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

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

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

    這會成為控制時間軸。

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

手動指定目標路徑

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

    這會成為控制時間軸。

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

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

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

    這會成為控制時間軸。

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

    • 請按一下滑鼠按鍵,在指令碼中置入插入點。接著,請在「動作工具箱」的「函數」類別中連按兩下 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();

此産品由 Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License 授權  Creative Commons 條款未涵蓋 Twitter™ 與 Facebook 文章。

法律說明   |   線上隱私權政策