Använda ActionScript-bibliotek i en HTML-sida

Adobe AIR 1.0 och senare

I AIR utökas HTML-skriptelementet så att en sida kan importera ActionScript-klasser i en kompilerad SWF-fil. Om du till exempel ska importera ett bibliotek med namnet myClasses.swf som finns i underkatalogen lib i programmets rotmapp, inkluderar du följande skripttagg i en HTML-fil:

<script src="lib/myClasses.swf" type="application/x-shockwave-flash"></script>
Viktigt! type-attributet måste vara type="application/x-shockwave-flash" för att biblioteket ska kunna läsas in på rätt sätt.

Om SWF-innehållet har kompilerats som en SWF-fil för Flash Player 10 eller AIR 1.5 måste du ange XML-namnutrymmet i programbeskrivningsfilen till namnutrymmet för AIR 1.5.

lib-katalogen och myClasses.swf-filen måste också ingå när AIR-filen paketeras.

Få tillgång till de importerade klasserna via egenskapen runtime för JavaScript Window-objektet:

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

Om klasserna i SWF-filen är ordnade i paket måste du även ta med paketnamnet. Om LibraryClass-definitionen till exempel finns i ett paket med namnet utilities kan du skapa en instans av klassen med följande programsats:

var libraryObject = new window.runtime.utilities.LibraryClass();
Obs! Om du vill kompilera ett ActionScript SWF-bibliotek så att det kan användas som en del av en HTML-sida i AIR, använder du acompc-kompilatorn. Verktyget acompc ingår i Flex SDK och beskrivs i dokumentationen för Flex SDK.

Få tillgång till HTML DOM och JavaScript-objekt från en importerad ActionScript-fil

Om du vill få tillgång till objekt på en HTML-sida från ActionScript i en SWF-fil som är importerad till sidan med hjälp av <script>-taggen, skickar du en referens till ett JavaScript-objekt, t.ex. window eller document, till en funktion som definieras i ActionScript-koden. Använd referensen i funktionen för att få åtkomst till JavaScript-objektet (eller andra objekt som är tillgängliga via den skickade referensen).

Ta till exempel följande HTML-sida:

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

På den här enkla HTML-sidan finns en JavaScript-variabel som heter num och en JavaScript-funktion som heter getStatus(). De här båda är egenskaper för sidans window-objekt. window.document-objektet innehåller också ett namngivet P-element (med ID p1).

Sidan läser in en ActionScript-fil, ”ASLibrary.swf”, som innehåller en klass (ASClass). ASClass definierar en funktion med namnet accessDOM() som spårar värdena för dessa JavaScript-objekt. Metoden accessDOM() använder JavaScript Window-objektet som ett argument. Med hjälp av den här Window-referensen kan den få åtkomst till andra objekt på sidan, inklusive variabler, funktioner och DOM-element. Se följande 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. 
    } 
}

Du kan både hämta och ange egenskaper för HTML-sidan från en importerad ActionScript-klass. Följande funktion anger till exempel innehållet för p1-elementet på sidan och den anger värdet för JavaScript-variabeln foo som finns på sidan:

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