Korzystanie z bibliotek ActionScript na stronie HTML

Adobe AIR 1.0 i starsze wersje

Środowisko AIR rozszerza element script HTML tak, że strona może importować klasy ActionScript do skompilowanego pliku SWF. Na przykład: aby zaimportować bibliotekę o nazwie myClasses.swf umieszczoną w podkatalogu lib głównego folderu aplikacji, należy umieścić poniższy znacznik script w pliku HTML:

<script src="lib/myClasses.swf" type="application/x-shockwave-flash"></script>
Ważne: Atrybut type biblioteki musi mieć wartość type="application/x-shockwave-flash" , aby biblioteka została poprawnie załadowana .

Jeśli zawartość SWF została skompilowana do pliku SWF programu Flash Player 10 lub środowiska AIR 1.5, należy wówczas ustawić przestrzeń nazw XML pliku deskryptora aplikacji na przestrzeń nazw środowiska AIR 1.5.

W czasie pakowania pliku AIR należy dołączyć także katalog lib i plik myClasses.swf .

Dostęp do zaimportowanych klas za pomocą właściwości runtime obiektu Window JavaScript:

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

Jeśli klasy w pliku SWF zostały zorganizowane w pakiety, należy dołączyć także nazwę pakietu. Na przykład: jeśli definicja klasy LibraryClass znajduje się w pakiecie o nazwie utilities , instancję klasy należy utworzyć za pomocą następującej instrukcji:

var libraryObject = new window.runtime.utilities.LibraryClass();
Uwaga: Aby skompilować bibliotekę SWF ActionScript w celu użycia jako części strony HTML w środowisku AIR, należy użyć kompilatora acompc . Narzędzie acompc jest częścią pakietu Flex SDK i zostało opisane w dokumentacji tego pakietu.

Uzyskiwanie dostępu do modelu DOM HTML i obiektów JavaScript z zaimportowanego pliku ActionScript

Aby uzyskać dostęp do obiektów na stronie HTML z kodu ActionScript pliku SWF zaimportowanego na stronę z użyciem znacznika <script> , należy przekazać odwołanie do obiektu JavaScript (np. window lub document ) do funkcji zdefiniowanej w kodzie ActionScript. Do dostępu do obiektu JavaScript (lub innych obiektów, do których dostęp można uzyskać przez przekazanie odwołania) służy odwołanie w funkcji.

Rozważmy na przykład następującą stronę 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>

Prosta strona HTML zawiera zmienną JavaScript o nazwie num oraz funkcję JavaScript o nazwie getStatus() . Obie są właściwościami obiektu window strony. Obiekt window.document zawiera element o nazwie P (z ID p1 ).

Strona ładuje plik ActionScript „ASLibrary.swf”, który zawiera klasę ASClass. Klasa ASClass definiuje funkcję o nazwie accessDOM() , która wyświetla wartości obiektów JavaScript. Metoda accessDOM() przyjmuje jako argument obiekt Window JavaScript. Za pomocą odwołania Window można uzyskać dostęp do innych obiektów na stronie łącznie ze zmiennymi, funkcjami i elementami DOM, co ilustruje poniższa definicja:

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

Możliwe jest pobranie i ustawienie właściwości strony HTML z zaimportowanej klasy ActionScript. Na przykład: poniższa funkcja ustawia na stronie treść elementu p1 oraz wartość zmiennej JavaScript foo :

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