Uso delle librerie di ActionScript in una pagina HTML

Adobe AIR 1.0 e versioni successive

AIR estende l'elemento di script HTML in modo che una pagina possa importare le classi ActionScript in un file SWF compilato. Ad esempio, per importare la libreria myClasses.swf , che si trova nella sottodirectory lib della cartella principale dell'applicazione, inserite il seguente tag script nel file HTML:

<script src="lib/myClasses.swf" type="application/x-shockwave-flash"></script>
Importante: l'attributo type deve essere impostato come type="application/x-shockwave-flash" affinché la libreria possa essere caricata correttamente.

Se il contenuto SWF viene compilato come SWF di Flash Player 10 o di AIR 1.5, dovete impostare lo spazio dei nomi XML del file descrittore dell'applicazione sullo spazio dei nomi di AIR 1.5.

È necessario includere anche la directory lib e il file myClasses.swf quando viene creato il pacchetto per il file AIR.

Per accedere alle classi importate, usate la proprietà runtime dell'oggetto JavaScript Window:

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

Se le classi nel file SWF sono organizzate in pacchetti, è necessario includere anche il nome del pacchetto. Ad esempio, se la definizione di LibraryClass si trova in un pacchetto denominato utilities , per creare un'istanza della classe dovete usare la seguente istruzione:

var libraryObject = new window.runtime.utilities.LibraryClass();
Nota: per compilare una libreria SWF di ActionScript da usare all'interno di una pagina HTML in AIR, usate il compilatore acompc . L'utilità acompc fa parte dell'SDK Flex ed è descritta nella documentazione corrispondente.

Accesso al modello DOM HTML e agli oggetti JavaScript da un file ActionScript importato

Per accedere da ActionScript agli oggetti di una pagina HTML in un file SWF importato nella pagina usando il tag <script> , passate un riferimento all'oggetto JavaScript, ad esempio window o document , a una funzione definita nel codice ActionScript. Usate il riferimento all'interno della funzione per accedere all'oggetto JavaScript (o ad altri oggetti accessibili tramite il riferimento specificato).

Ad esempio, esaminate la seguente pagina 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>

In questa semplice pagina HTML sono presenti una variabile JavaScript denominata num e una funzione JavaScript denominata getStatus() . Entrambe sono proprietà dell'oggetto window della pagina. Inoltre l'oggetto window.document include un elemento chiamato P (con ID p1 ).

Questa pagina carica il file ActionScript “ASLibrary.swf” contenente la classe ASClass. A sua volta, la classe ASClass definisce una funzione chiamata accessDOM() , che tiene traccia dei valori di questi oggetti JavaScript. Il metodo accessDOM() accetta l'oggetto JavaScript Window come argomento. Usando questo riferimento Window, ottiene l'accesso ad altri oggetti della pagina, tra cui variabili, funzioni ed elementi DOM, come indicato nella seguente definizione:

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

Potete sia ottenere che impostare le proprietà della pagina HTML da una classe ActionScript importata. Ad esempio, la seguente funzione imposta il contenuto dell'elemento p1 e il valore della variabile JavaScript foo nella pagina:

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