外部 API 需求與優點
Flash Player 9 以及更新的版本,Adobe AIR 1.0 以及更新的版本
外部 API 屬於 ActionScript 的一部分,可提供一項機制讓 ActionScript 與在「外部應用程式」中執行的程式碼進行通訊,這個外部應用程式也就是 Flash Player 的容器 (通常是網頁瀏覽器或獨立的放映檔應用程式)。在 ActionScript 3.0 中,是由 ExternalInterface 類別提供外部 API 的功能;而在 Flash Player 8 之前的 Flash Player 版本中,則是由
fscommand()
動作與容器應用程式進行通訊。ExternalInterface 類別取代了
fscommand()
。
備註:
如果您需要使用舊版的
fscommand()
函數 (例如,為了維持與早期應用程式的相容性,或是與第三方 SWF 容器應用程式或獨立的 Flash Player 維持互動),您仍然可以在 flash.system 套件中找到這個套件等級函數。
ExternalInterface 類別是一個子系統,可讓您輕鬆地在 ActionScript 和 Flash Player 與 HTML 頁面中的 JavaScript 之間進行通訊。
ExternalInterface 類別僅在下列情況下才能使用:
-
Windows 的 Internet Explorer 的所有支援版本 (5.0 和更新版本)
-
所有支援 NPRuntime 介面的瀏覽器,目前這些瀏覽器包含 Firefox 1.0 和更新版本、Mozilla 1.7.5 和更新版本、Netscape 8.0 和更新版本,以及 Safari 1.3 和更新版本。
-
SWF 內嵌在由 HTMLLoader 控制項顯示的 HTML 頁面時的 AIR 應用程式。
在其它情況下 (例如在獨立的播放程式中執行時),
ExternalInterface.available
屬性就會傳回
false
。
您可以從 ActionScript 呼叫 HTML 網頁上的 JavaScript 函數。和
fscommand()
相比,外部 API 可提供下列更完備的功能:
-
您可以使用任何 JavaScript 函數,而不只是使用能與
fscommand()
函數搭配使用的函數。
-
您可以傳遞任意名稱且任意數目的引數,不必受限於只能傳遞一個命令和單一字串引數。和
fscommand()
相較之下,外部 API 更具彈性。
-
您可以傳遞不同的資料類型 (例如 Boolean、Number 和 String),而不受限於只能傳遞 String 類型的參數。
-
您可以接收某個呼叫的值,並讓這個值立即回傳到 ActionScript (當您進行該呼叫時)。
重要事項:
如果 HTML 網頁中指定的 Flash Player 實體名稱 (
object
標籤的
id
特質) 含有連字符號 (
-
) 或其它已在 JavaScript 中定義為運算子的字元 (例如
+
、
*
、
/
、
\
、
.
等字元),當您在 Internet Explorer 中檢視容器網頁時,使用 ActionScript 進行的 ExternalInterface 呼叫將無法運作。此外,如果定義 Flash Player 實體的 HTML 標籤 (
object
和
embed
標籤) 是在 HTML
form
標籤的巢狀架構內,使用 ActionScript 進行的 ExternalInterface 呼叫也無法運作。
|
|
|