ActionScript-bibliotheken in een HTML-pagina gebruiken

Adobe AIR 1.0 of hoger

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;