在 HTML 網頁中使用 ActionScript 元件庫

Adobe AIR 1.0 以及更新的版本

AIR 可以擴充 HTML 指令碼元素,如此網頁即可在已編譯的 SWF 檔中匯入 ActionScript 類別。例如,若要匯入名為「myClasses.swf」的元件庫 (位於根應用程式資料夾的 lib 子目錄中),請在 HTML 檔中納入下列指令碼標籤:

<script src="lib/myClasses.swf" type="application/x-shockwave-flash"></script>
重要事項: type 特質必須是 type="application/x-shockwave-flash",這個元件庫才能正確載入。

如果 SWF 內容的編譯結果屬於 Flash Player 10 或 AIR 1.5 SWF,您就必須將應用程式描述器檔案的 XML 命名空間設定為 AIR 1.5 命名空間。

封裝 AIR 檔時,也必須將 lib 目錄和 myClasses.swf 檔案包含其中。

透過 JavaScript Window 物件的 runtime 屬性,存取匯入的類別:

var libraryObject = new window.runtime.LibraryClass();

如果 SWF 檔中的類別都已經組織為套件,那麼您也必須納入套件名稱。舉例來說,如果 LibraryClass 定義位於名為「utilities」的套件中,您可以使用下列陳述式建立該類別的實體:

var libraryObject = new window.runtime.utilities.LibraryClass();
備註: 若要編譯 ActionScript SWF 元件庫,以便在 AIR 中做為 HTML 網頁的一部分使用,請使用 acompc 編譯器。acompc 公用程式為 Flex SDK 的一部分。如需詳細資訊,請參閱「Flex SDK 說明文件」。

從已匯入的 ActionScript 檔案存取 HTML DOM 和 JavaScript 物件

若要在已使用 <script> 標籤匯入至 HTML 網頁的 SWF 檔中,透過 ActionScript 存取網頁內的物件,請將 JavaScript 物件 (例如 windowdocument) 的參考傳遞至 ActionScript 程式碼中定義的函數。您可以在該函數中使用參考來存取 JavaScript 物件 (或其它可以透過傳入的參考來存取的物件)。

例如,請考慮下列 HTML 網頁:

<html> 
    <script src="ASLibrary.swf" type="application/x-shockwave-flash"></script> 
    <script> 
        num = 254; 
        function getStatus() { 
            return "OK."; 
        } 
        function runASFunction(window){ 
            var obj = new runtime.ASClass(); 
            obj.accessDOM(window); 
        } 
    </script> 
    <body onload="runASFunction"> 
        <p id="p1">Body text.</p> 
    </body> 
</html>

這個簡單的 HTML 網頁具有名為「num」的 JavaScript 變數和名為「getStatus()」的 JavaScript 函數。這兩者都是網頁之 window 物件的屬性。同時,window.document 物件也包含名為 P 的元素 (ID 為「p1」)。

這個網頁會載入 ActionScript 檔案「ASLibrary.swf」,這個檔案包含 ASClass 類別。ASClass 會定義名為 accessDOM() 的函數,這個函數會追蹤這些 JavaScript 物件的值。accessDOM() 方法會採用 JavaScript Window 物件做為引數。使用這個 Window 參考即可存取網頁中的其它物件 (包括變數、函數和 DOM 元素),如下列定義所示範:

public class ASClass{ 
    public function accessDOM(window:*):void { 
        trace(window.num); // 254 
        trace(window.document.getElementById("p1").innerHTML); // Body text.. 
        trace(window.getStatus()); // OK. 
    } 
}

您可以透過已匯入的 ActionScript 類別,取得及設定 HTML 網頁的屬性。例如,下列函數會設定網頁上 p1 元素的內容,以及設定網頁上 JavaScript 變數 foo 的值。

public function modifyDOM(window:*):void { 
    window.document.getElementById("p1").innerHTML = "Bye"; 
    window.foo = 66;