AIR breidt het HTML-scriptelement uit, zodat een pagina ActionScript-klassen kan importeren in een gecompileerd SWF-bestand. Stel dat de bibliotheek
myClasses.swf
zich in de submap
lib
van de hoofdtoepassingsmap bevindt. Als u deze bibliotheek wilt importeren, neemt u de volgende scripttag op in een HTML-bestand:
<script src="lib/myClasses.swf" type="application/x-shockwave-flash"></script>
Belangrijk:
Het kenmerk type moet
type="application/x-shockwave-flash"
zijn, anders wordt de bibliotheek niet goed geladen.
Als de SWF-inhoud is gecompileerd als Flash Player 10 of AIR 1.5 SWF, moet u de XML-naamruimte van het descriptorbestand van de toepassing instellen op de AIR 1.5-naamruimte.
De map
lib
en het bestand
myClasses.swf
moeten ook worden opgenomen wanneer het AIR-bestand in een pakket wordt geplaatst.
Benader de geïmporteerde klassen via de eigenschap
runtime
van het JavaScript-object Window:
var libraryObject = new window.runtime.LibraryClass();
Als de klassen in het SWF-bestand zijn verdeeld in pakketten, moet u ook de pakketnaam opnemen. Als de definitie LibraryClass zich bijvoorbeeld in een pakket met de naam
utilities
bevindt, maakt u met de volgende instructie een instantie van de klasse:
var libraryObject = new window.runtime.utilities.LibraryClass();
Opmerking:
Als u in AIR een ActionScript SWF-bibliotheek wilt compileren als onderdeel van een HTML-pagina, gebruikt u de compiler
acompc
. Het hulpprogramma acompc maakt deel uit van de SDK van Flex en wordt beschreven in de Flex SDK-documentatie.
HTML DOM- en JavaScript-objecten oproepen vanuit een geïmporteerd ActionScript-bestand
Als u objecten in een HTML-pagina wenst op te roepen vanuit ActionScript in een SWF-bestand dat in de pagina is geïmporteerd met behulp van de tag
<script>
, geeft u een verwijzing naar een JavaScript-object zoals
window
of
document
op aan een functie die in de ActionScript-code is gedefinieerd. Gebruik de verwijzing binnen de functie om het JavaScript-object op te roepen (of andere objecten die toegankelijk zijn via de doorgegeven verwijzing).
Bekijken we als voorbeeld de volgende HTML-pagina:
<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>
Deze eenvoudige HTML-pagina heeft een JavaScript-variabele met de naam
num
en een JavaScript-functie met de naam
getStatus()
. Beide zijn eigenschappen van het object
window
van de pagina. Bovendien bevat het object
window.document
een element met de naam P (met de id
p1
).
De pagina laadt het ActionScript-bestand "ASLibrary.swf", waarin zich de klasse ASClass bevindt. ASClass definieert de functie
accessDOM()
, die de waarden van deze JavaScript-objecten bijhoudt. De methode
accessDOM()
gebruikt het JavaScript-object Window als argument. Op basis van deze Window-verwijzing kunnen andere objecten in de pagina worden benaderd, zoals variabelen, functies en DOM-elementen, zoals wordt geïllustreerd in de volgende definitie:
public class ASClass{
public function accessDOM(window:*):void {
trace(window.num); // 254
trace(window.document.getElementById("p1").innerHTML); // Body text..
trace(window.getStatus()); // OK.
}
}
U kunt eigenschappen van de HTML-pagina ophalen en instellen op basis van een geïmporteerde ActionScript-klasse. De volgende functie stelt bijvoorbeeld de inhoud van het element
p1
op de pagina in, evenals de waarde van de JavaScript-variabele
foo
op de pagina:
public function modifyDOM(window:*):void {
window.document.getElementById("p1").innerHTML = "Bye";
window.foo = 66;