使用外部 API 的基本概念

Flash Player 9 以及更新的版本,Adobe AIR 1.0 以及更新的版本

雖然在某些情況下 SWF 檔可以獨立執行 (例如,若您使用 Adobe® Flash® Professional 建立 SWF 放映檔時),但是在大部分情況下,SWF 應用程式必須當做另一個應用程式內部的元素來執行。一般來說,內含 SWF 的容器會是一個 HTML 檔;在某些比較少見的情況中,SWF 檔則是當做桌面應用程式的全部或部分使用者介面來使用。

隨著您所使用的應用程式越來越進階,就會越需要在 SWF 檔與容器應用程式之間建立通訊模式。例如,讓 HTML 網頁顯示文字或其它資訊,並加入 SWF 檔以顯示圖表或視訊之類的動態視覺內容,都已經是很普遍的作法。在這種情況下,您可能會希望讓使用者按下網頁上按鈕,就能變更 SWF 檔中的某些部分。ActionScript 包含了一種稱為外部 API 的機制,可在 SWF 檔的 ActionScript 與容器應用程式的其它程式碼之間協助建立起這種通訊類型。

重要概念與術語

下列參考清單包含了與此功能相關的重要術語:

容器應用程式
Flash Player 執行諸如網頁和 HTML 頁面等 SWF 檔案所在的應用程式,其中包含 Flash Player 內容或可在網頁中載入 SWF 的 AIR 應用程式。

放映檔
包含 SWF 內容與 Flash Player 內嵌版本的可執行檔。您可使用 Flash Professional 或獨立 Flash Player 建立放映檔。我們通常會在光碟中加上放映檔來散發 SWF 檔;或是當下載檔案大小不成問題,而 SWF 作者希望確定使用者不管其電腦是否已經安裝了 Flash Player,都能執行 SWF 檔時,就會使用放映檔。

Proxy
媒介應用程式或程式碼,可用來代替某個應用程式 (「呼叫端應用程式」) 呼叫另一個應用程式 (「外部應用程式」) 中的程式碼,而且會將值傳回呼叫端應用程式。下列是您應該使用 Proxy 的幾項理由:
  • 藉由在呼叫端應用程式中將原生函數呼叫轉換為外部應用程式能夠理解的格式,簡化執行外部函數呼叫的程序.

  • 用來解決一些導致呼叫者無法與外部應用程式直接通訊的安全性與其它限制問題。

序列化
將物件或資料值轉換為可在兩種程式設計系統 (例如在網際網路中,或單一電腦上執行的兩種不同的應用程式) 的訊息之間傳遞值的特定格式。

逐步執行範例

這裡所提供的許多程式碼範例都是一小段的程式碼,僅供示範之用,並不是檢查數值的完整實用範例或程式碼。由於使用外部 API 需要 (依定義) 撰寫 ActionScript 程式碼以及容器應用程式中的程式碼,因此測試範例的步驟會包括建立容器 (例如,包含 SWF 檔的網頁) 和使用列出的程式碼與容器進行互動。

若要測試 ActionScript 與 JavaScript 通訊的範例:

  1. 使用 Flash Professional 編寫新文件,然後在電腦中儲存此文件。

  2. 從主選單中選擇「檔案 > 發佈設定」。

  3. 在「發佈設定」對話方塊中,確認「格式」索引標籤上只選取了「HTML」和「Flash」核取方塊。

  4. 按一下「發佈」按鈕。這樣便會在同一個檔案夾中產生 SWF 檔和 HTML 檔,它們的名稱和您用來儲存文件的名稱相同。按一下「確定」,關閉「發佈設定」對話方塊。

  5. 取消選取 HTML 核取方塊。現在既然產生了 HTML 網頁,便可以著手修改它,加入適當的 JavaScript 程式碼。取消選取 HTML 核取方塊可以確保修改 HTML 網頁之後,Flash 不會在發佈 SWF 檔時,以新的 HTML 網頁覆寫您的變更。

  6. 按一下「確定」,關閉「發佈設定」對話方塊。

  7. 使用 HTML 或文字編輯應用程式,開啟 Flash 在發佈 SWF 檔時所建立的 HTML 檔案。在 HTML 原始碼中,加入開頭和結束 script 標籤,然後從列出的程式碼範例中,將 JavaScript 程式碼複製到這兩個標籤之間。

    <script> 
    // add the sample JavaScript code here 
    </script>
  8. 儲存 HTML 檔並返回 Flash。

  9. 在「時間軸」的「影格 1」上選取關鍵影格,並開啟「動作」面板。

  10. 將列出的 ActionScript 程式碼複製到「Script」窗格中。

  11. 從主選單中選擇「檔案 > 發佈」,以您所做的變更來更新 SWF 檔。

  12. 使用網頁瀏覽器,開啟您所編輯的 HTML 網頁加以檢視,並測試 ActionScript 與此 HTML 網頁之間的通訊。

若要測試 ActionScript 與 ActiveX 容器通訊的範例:

  1. 使用 Flash Professional 編寫新文件,然後在電腦中儲存此文件。您可能想要將它儲存在容器應用程式預期可找到 SWF 檔的檔案夾中。

  2. 從主選單中選擇「檔案 > 發佈設定」。

  3. 在「發佈設定」對話方塊中,確認「格式」索引標籤上只選取了「Flash」核取方塊。

  4. 在「Flash」核取方塊旁的「檔案」欄位中,按一下檔案夾圖示以選取 SWF 檔的發佈目的地檔案夾。藉由設定 SWF 檔的位置,您可以 (舉例來說) 將文件保留在某個資料夾中,而將已發佈的 SWF 檔放在另一個資料夾,例如包含容器應用程式原始碼的資料夾。

  5. 在「時間軸」的「影格 1」上選取關鍵影格,並開啟「動作」面板。

  6. 將範例的 ActionScript 程式碼複製到「Script」窗格中。

  7. 從主選單中選擇「檔案 > 發佈」以重新發佈 SWF 檔。

  8. 建立並執行容器應用程式,以測試 ActionScript 與容器應用程式之間的通訊。

如需使用外部 API 與 HTML 頁面進行通訊的完整範例,請參閱下列主題: 這些範例包含完整的程式碼 (包括 ActionScript 和容器錯誤檢查程式碼),您在使用外部 API 撰寫程式碼時應該使用這些程式碼。如需其它使用外部 API 的完整範例,請參閱「Adobe® Flash® Professional CS5 的 ActionScript® 3.0 參考」中的 ExternalInterface 類別範例。