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;