使用 JavaScript API

身為一名 Adobe® Flash® Professional CC 的使用者,您可能已經熟悉使用 Adobe® ActionScript® 的方法,這可讓您建立可以在 Adobe® Flash® Player 執行階段中執行的指令碼。在此文件中說明的 Flash JavaScript 應用程式設計介面 (JavaScript API 或 JSAPI) 是互補程式設計工具,可以用來建立在 Flash 編寫環境中執行的指令碼。

本文件說明 JavaScript API 中可用的物件、方法和屬性。這裡假設您知道在編寫環境中工作時,該如何使用所記載的命令。倘若您對於特定命令的功能有所疑問,請使用「Flash 說明」中的其它文件 (例如,「使用 Flash」) 尋找該項資訊。

本文件假設您熟悉 JavaScript 或 ActionScript 語法和基本程式設計概念 (例如函數、參數與資料類型)。

Flash JavaScript API 可讓您撰寫指令碼,在 Flash 編寫環境中 (也就是使用者開啟 Flash 程式時) 執行數種動作。這項功能與 ActionScript 語言不同,後者可讓您撰寫在 Flash Player 環境中 (亦即 SWF 檔正在播放時) 執行動作的指令碼。這項功能也與 JavaScript 命令 (您可能會在網頁瀏覽器顯示的頁面中使用) 不同。

您可以使用 JavaScript API 來撰寫 Flash 應用程式指令碼,以便協助精簡編寫程序。例如,您可以撰寫自動化重複工作的指令碼,或將自訂工具新增至「工具」面板。

Flash JavaScript API 的設計與 Adobe® Dreamweaver® 和 Adobe® Fireworks® JavaScript API (依據 Netscape JavaScript API 所設計) 相似。 Flash JavaScript API 依據「文件物件模型」(Document Object Model,DOM) 設計,因此可以使用 JavaScript 物件存取 Flash 文件。Flash JavaScript API 包括 Netscape JavaScript API 的所有元素,再加上 Flash DOM。本文件將說明這些增加的物件與其方法和屬性。Flash 指令碼中可以使用原生 JavaScript 語言的任何元素,不過,只有在 Flash 文件內容中有意義的元素才有效。

此外,JavaScript API 還包含一些方法,讓您可以利用各種 JavaScript 及自訂的 C 程式碼組合來實作擴充程式。如需詳細資訊,請參閱:C 語言層次擴充

Flash 中的 JavaScript 解譯器為 1.8 版的 Mozilla SpiderMonkey 引擎,可在下列網站取得:www.mozilla.org/js/spidermonkey/。SpiderMonkey 為 Mozilla.org 開發的兩種 JavaScript 語言參考實作之一,與嵌入 Mozilla 瀏覽器的引擎相同。

SpiderMonkey 依照 ECMAScript (ECMA-262) Edition 3 的語言規格中的定義實作整個核心 JavaScript 語言,而且和這個規格完全相容。僅不支援不屬於 ECMA-262 規格的瀏覽器專用主機物件。同樣地,許多 JavaScript 參考指南會區分核心 JavaScript 與用戶端 (瀏覽器相關) JavaScript。只有核心 JavaScript 適用於 Flash JavaScript 解譯器。

建立 JSFL 檔

您可以使用 Adobe Flash Professional 或慣用的文字編輯器來撰寫和編輯 Flash JavaScript (JSFL) 檔案。如果您使用的是 Flash,這些檔案的預設副檔名是 .jsfl。若要撰寫指令碼,選取「檔案 > 新增 > Flash JavaScript 檔案」。

您也可以選取「操作記錄」面板中的命令,建立 JSFL 檔案。接著按一下「操作記錄」面板中的「儲存」按鈕,或是從面板選單中選取「儲存成命令檔」。命令 (JSFL) 檔會儲存於 Commands 資料夾中 (請參閱儲存 JSFL 檔)。您可以接著開啟檔案,並使用編輯其它指令碼檔案的相同方式加以編輯。

「操作記錄」面板還會提供其它有用的選項。您可以將選取的命令複製到「剪貼簿」,也可以檢視在使用 Flash 時所產生的 JavaScript 命令。

若要將命令從「操作記錄」面板複製到剪貼簿:

  1. 從「操作記錄」面板選取一或多個命令。

  2. 請執行下列其中一項:

    • 按一下「複製」按鈕。

    • 從面板選單選取「複製步驟」。

若要在「操作記錄」面板中檢視 JavaScript 命令:

  • 從面板選單選取「面板」中的「檢視 > JavaScript」。

儲存 JSFL 檔

您可以在 Flash 編寫環境中提供 JSFL 指令碼,方法是將其儲存在 Configuration 資料夾內的數個資料夾之一。根據預設,Configuration 資料夾位於下列位置:

  • Windows® 7™:

    開機磁碟\Users\使用者名稱\AppData\Local\Adobe\Flash CC\語言\Configuration\

  • Windows® Vista™:

    開機磁碟\Users\使用者名稱\Local Settings\Application Data\Adobe\Flash CC\語言\Configuration\

  • Mac OS® X:

    Macintosh 硬碟/Users/使用者名稱/Library/Application Support/Adobe/Flash CC/語言/Configuration/

若要判斷 Configuration 資料夾的位置,請參閱 fl.configDirectoryfl.configURI,如下列範例所示:

// store directory to a variable  
var configDir = fl.configDirectory; 
// display directory in the Output panel 
fl.trace(fl.configDirectory);

Configuration 資料夾內的下列資料夾可能會包含能在編寫環境中存取的指令碼:Behaviors (支援用於行為的使用者介面)、Commands (包含顯示於「命令」選單的程式碼)、JavaScript (包含由指令碼助理所使用的指令碼以填入使用者介面控制項)、Tools (包含「工具」面板中的可擴充工具) 以及 WindowSWF (包含顯示於 Windows 選單的面板)。本文件著重於用於命令和工具的指令碼。

如果編輯 Commands 資料夾中的指令碼,便可立即在 Flash 中使用新的指令碼。如果要編輯可擴充工具的指令碼,必須先關閉 Flash 然後再重新加以啟動,或者使用 fl.reloadTools() 命令。不過,如果是使用指令碼將可擴充工具新增至「工具」面板,之後又編輯過該指令碼,就必須從「工具」面板中移除該工具然後再將其加入,或者先關閉 Flash 然後再次啟動,修改過的工具才能使用。

有兩個位置可供您儲存命令和工具檔案,方便您在編寫環境中存取這些項目。

  • 對於「命令」選單上顯示成項目的指令碼,請將 JSFL 檔儲存至下列位置的 Commands 資料夾內:

    作業系統

    位置

    Windows 7

    開機磁碟\Users\使用者名稱\AppData\Local\Adobe\Flash CC\語言\Configuration\Commands

    Windows Vista

    開機磁碟\Users\使用者名稱\Local Settings\Application Data\Adobe\Flash CC\語言\Configuration\Commands

    Mac OS X

    Macintosh 硬碟/Users/使用者名稱/Library/Application Support/Adobe/Flash CC/語言/Configuration/Commands

  • 對於「工具」面板中顯示成可擴充工具的指令碼,請將 JSFL 檔儲存至下列位置的 Tools 資料夾內:

    作業系統

    位置

    Windows 7

    開機磁碟\Users\使用者名稱\AppData\Local\Adobe\Flash CC\語言\Configuration\Tools

    Windows Vista

    開機磁碟\Users\使用者名稱\Local Settings\Application Data\Adobe\Flash CC\語言\Configuration\Tools

    Mac OS X

    Macintosh 硬碟/Users/使用者名稱/Library/Application Support/Adobe/Flash CC/語言/Configuration/Tools

如果 JSFL 檔有其它附加檔案,例如 XML 檔,請將這些檔案儲存到相同的目錄做為 JSFL 檔。

執行指令碼

您可以使用數種方式執行指令碼。本節將說明一些最常見的方式。

若要執行目前正在檢視或編輯的指令碼:

  • 按一下右鍵 (Macintosh 中為 Command+按一下) 並選擇「執行指令碼」。

  • 在「Script」視窗工具列上按一下「執行指令碼」圖示。

此選項可讓您在儲存指令碼之前先執行它。此選項同時可在沒有開啟任何 FLA 檔的情況下讓您執行指令碼。

若要執行 Commands 資料夾中的指令碼,請執行下列步驟之一:

  • 從編寫環境選取「命令 > 指令碼名稱」。

  • 使用已指定給指令碼的鍵盤快速鍵。若要指定鍵盤快速鍵,請使用「編輯 > 鍵盤快速鍵」,然後從「命令」彈出式選單選取「繪圖」選單命令。展開選單樹狀結構中的 Commands 節點,以檢視可用指令碼的清單。

若要執行的命令指令碼不在 Commands 資料夾內,請執行下列步驟之一:

  • 從編寫環境選取「命令 > 執行命令」,然後選取要執行的指令碼。

  • 在指令碼內使用 fl.runScript() 命令。

  • 在檔案系統中按兩下指令碼檔。

若要將 JSFL 檔中實作的工具加入至「工具」面板:

  1. 將工具的 JSFL 檔及其它相關檔案複製到 Tools 資料夾中 (請參閱儲存 JSFL 檔)。

  2. 選取「編輯 > 自訂工具面板 (Windows) 或 Flash > 自訂工具面板 (Macintosh)」。

  3. 將工具增加至可用的工具清單。

  4. 按一下「確定」。

您可以使用 MMExecute() 函數 (內容記載於「ActionScript 3.0 語言和組件參考」中),在 ActionScript 檔案中加入個別的 JavaScript API 命令。不過,MMExecute() 函數只有在自訂使用者介面元素內容 (例如組件「屬性」檢測器或編寫環境中的 SWF 面板) 中使用時才有作用。即使 JavaScript API 命令是從 ActionScript 呼叫,在 Flash Player 中或編寫環境外都不會有任何作用。

若要從 ActionScript 指令碼發出命令:

  • 使用下列語法 (您可以將數個命令連結成一個字串):

    MMExecute(Javascript command string);

    您也可以從命令列執行指令碼。

若要從 Windows 命令列執行指令碼:

  • 使用下列語法 (依需要新增路徑資訊):

    "flash.exe" myTestFile.jsfl [-AlwaysRunJSFL]

    使用 ‑AlwaysRunJSFL 選項可略過會提示您確認指令碼執行的對話方塊。

若要從 Macintosh 上的「Terminal」應用程式執行指令碼,請使用下列其中一個方法:

  • 使用下列 osacript 語法 (依需要新增路徑資訊):

    osascript -e 'tell application "flash" to open alias "Mac OS X:Users:user:myTestFile.jsfl" '

    osascript 命令還可以在檔案中執行 AppleScript。例如,您可以將下列文字放在名為 myScript 的檔案中:

    tell application "flash" 
    open alias "Mac OS X:Users:user:myTestFile.jsfl" 
    end tell

    接著,使用下列命令執行指令碼:

    osascript myScript
  • 使用 flashpro 命令:

    /Applications/Adobe\ Flash\ CC/flashpro.app/Contents/MacOS/flashpro <path of the jsfl file>