Verwenden von ActionScript-Bibliotheken in HTML-Seiten

Adobe AIR 1.0 und höher

AIR erweitert das HTML-Skriptelement so, dass die Seite ActionScript-Klassen in eine kompilierte SWF-Datei importieren kann. Um die im Unterverzeichnis lib des Stammanwendungsordners enthaltene Bibliothek myClasses.swf zu importieren, müssen Sie das folgende Skript-Tag in einer HTML-Datei hinzufügen:

<script src="lib/myClasses.swf" type="application/x-shockwave-flash"></script>
Wichtig: Damit die Bibliothek ordnungsgemäß geladen wird, muss das Typattribut type="application/x-shockwave-flash" lauten.

Wenn der SWF-Inhalt als Flash Player 10- oder AIR 1.5-SWF kompiliert wird, müssen Sie den XML-Namespace der Anwendungsdeskriptordatei auf den AIR 1.5-Namespace einstellen.

Das Verzeichnis lib und die Datei myClasses.swf müssen ebenfalls beim Verpacken der AIR-Datei vorhanden sein.

Greifen Sie über die runtime -Eigenschaft des JavaScript-Window-Objekts auf die importierten Klassen zu:

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

Sind die Klassen in der SWF-Datei in Paketen organisiert, müssen Sie auch den Paketnamen aufnehmen. Ist beispielsweise die LibraryClass-Definition in einem Paket namens utilities enthalten, müssen Sie mit der folgenden Anweisung eine Instanz der Klasse erstellen:

var libraryObject = new window.runtime.utilities.LibraryClass();
Hinweis: Verwenden Sie den acompc -Compiler, um eine ActionScript-SWF-Bibliothek zu kompilieren, die im Rahmen einer HTML-Seite in AIR verwendet werden soll. Das acompc-Dienstprogramm ist im Lieferumfang des Flex-SDK enthalten und wird in der Flex-SDK-Dokumentation beschrieben.

Zugreifen auf die HTML-DOM- und JavaScript-Objekte aus einer importierten ActionScript-Datei

Um auf Objekte in einer HTML-Seite mit ActionScript in einer SWF-Datei zuzugreifen, die mit dem <script> -Tag importiert wurde, übergeben Sie einen Verweis auf ein JavaScript-Objekt (wie z. B. window oder document ) an eine im ActionScript-Code definierte Funktion. Verwenden Sie den Verweis in der Funktion zum Zugreifen auf das JavaScript-Objekt (oder andere Objekte, auf die über den übergebenen Verweis zugegriffen werden kann).

Sehen Sie sich beispielsweise folgende HTML-Seite an:

<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>

Diese einfache HTML-Seite hat eine JavaScript-Variable namens num und eine JavaScript-Funktion namens getStatus() . Bei beiden handelt es sich um Eigenschaften des window -Objekts der Seite. Das window.document -Objekt enthält außerdem ein benanntes P-Element (mit der ID p1 ).

Die Seite lädt eine ActionScript-Datei, „ASLibrary.swf“, die die ASClass-Klasse enthält. ASClass definiert eine Funktion namens accessDOM() , die einfach die Werte dieser JavaScript-Objekte verfolgt. Die accessDOM() -Methode akzeptiert das JavaScript Window-Objekt als Argument. Mit diesem Window-Verweis kann es auf andere Objekte in der Seite zugreifen, darunter Variablen, Funktionen und DOM-Elemente. Siehe dazu die folgende Definition:

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

Sie können Eigenschaften der HTML-Seite aus einer importierten ActionScript-Klasse abrufen und festlegen. Die folgende Funktion legt beispielsweise die Inhalte des p1 -Elements auf der Seite und den Wert der foo -JavaScript-Variable auf der Seite fest:

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