Grunderna i externt API

Flash Player 9 och senare, Adobe AIR 1.0 och senare

Även om en SWF-fil i vissa fall kan köras fristående (till exempel om du använder Adobe® Flash® Professional för att skapa en SWF-projektor) körs ett SWF-program i de flesta fall som ett element i ett annat program. Oftast är behållaren som innehåller SWF-filen en HTML-fil. Mindre vanligt är att SWF-filen används som ett helt eller en del av ett användargränssnitt i ett skrivbordsprogram.

När du arbetar med mer avancerade program kan du upptäcka att du behöver upprätta kommunikation mellan SWF-filen och behållarprogrammet. Det är till exempel vanligt att en webbsida visar text eller annan information i HTML-format och att en SWF-fil används för att visa dynamiskt visuellt innehåll som diagram eller video. I så fall kanske du vill att något ska ändras i SWF-filen när användaren klickar på en knapp på webbsidan. I ActionScript finns en mekanism som kallas det externa API:t (gränssnittet) som underlättar sådan kommunikation mellan ActionScript i en SWF-fil och annan kod i behållarprogrammet.

Viktiga termer och begrepp

Följande referenslista innehåller viktiga termer om den här funktionen:

Behållarprogram
Programmet där Flash Player kör en SWF-fil, till exempel en webbläsare eller en HTML-sida som har Flash Player-innehåll eller ett AIR-program som läser in SWF-filen i en webbsida.

Projektor
En körbar fil med SWF-innehåll och en inbäddad version av Flash Player. Du kan skapa en projektorfil med Flash Professional eller den fristående Flash Player. Projektorer används ofta för att distribuera SWF-filer på CD-ROM-skivor eller i andra fall där filstorleken inte är ett hinder och utvecklaren vill vara säker på att alla användare kan köra SWF-filen, oavsett vilken version av Flash Player som är installerad på användarens dator.

Proxy
Ett mellanprogram eller en mellankod som anropar kod i ett program (det ”externa programmet”) för ett annat programs räkning (det ”anropande programmet”) och returnerar värden till det anropande programmet. En proxy kan användas av olika skäl, bland annat:
  • För att förenkla processen att göra externa funktionsanrop genom att konvertera inbyggda funktionsanrop i det anropande programmet till ett format som det externa programmet förstår.

  • För att förbigå säkerhetsbegränsningar eller andra hinder som gör att anroparen inte kan kommunicera direkt med det externa programmet.

Serialisera
Att konvertera objekt eller datavärden till ett format som kan användas för att skicka värdena i meddelanden mellan två programmeringssystem, till exempel via Internet eller mellan två olika program som körs på en enda dator.

Arbeta med exemplen

Många av kodexemplen här är små, demonstrativa kodavsnitt, inte kompletta fungerande exempel eller kod som kontrollerar värden. Eftersom det externa API:t (per definition) kräver att du skriver både ActionScript-kod och kod i ett behållarprogram måste en behållare (till exempel en webbsida som innehåller SWF-filen) skapas och koden måste interagera med behållaren för att exemplen ska kunna testas.

Så här testar du ett exempel på kommunikation mellan ActionScript och JavaScript:

  1. Skapa ett nytt dokument med Flash Professional och spara det på datorn.

  2. Välj Arkiv > Publiceringsinställningar på huvudmenyn.

  3. Kontrollera att kryssrutorna Flash och HTML är markerade på fliken Format i dialogrutan Publiceringsinställningar.

  4. Klicka på knappen Publicera. Då skapas en SWF-fil och en HTML-fil i samma mapp och med samma namn som du använde för att spara dokumentet. Klicka på OK för att stänga dialogrutan Publiceringsinställningar.

  5. Avmarkera kryssrutan HTML. Nu när HTML-sidan har skapats ska du ändra den till JavaScript-kod. När du har avmarkerat kryssrutan HTML kommer inte Flash att skriva över ändringarna med en ny HTML-sida när du har ändrat HTML-sidan och Flash publicerar SWF-filen.

  6. Klicka på OK för att stänga dialogrutan Publiceringsinställningar.

  7. Öppna HTML-filen som skapades av Flash när du publicerade SWF-filen med en HTML- eller textredigerare. Lägg till script -taggar för öppning och stängning, och kopiera dem till JavaScript-koden från kodexemplen:

    <script> 
    // add the sample JavaScript code here 
    </script>
  8. Spara HTML och gå tillbaka till Flash.

  9. Markera nyckelbildrutan i ram 1 på tidspanelen och öppna sedan åtgärdspanelen.

  10. Kopiera ActionScript-kodexemplet till rutan Skript.

  11. Välj Arkiv > Publicera på huvudmenyn så att SWF-filen uppdateras med ändringarna du gjort.

  12. Öppna HTML-sidan du redigerade med en webbläsare så att du kan se sidan och testa kommunikationen mellan ActionScript och HTML-sidan.

Så här testar du ett exempel på kommunikation mellan ActionScript och en ActiveX-behållare:

  1. Skapa ett nytt dokument med Flash Professional och spara det på datorn. Det kan vara praktiskt att spara det i mappen där behållarprogrammet kommer att förvänta sig att hitta SWF-filen.

  2. Välj Arkiv > Publiceringsinställningar på huvudmenyn.

  3. Kontrollera att bara kryssrutan Flash är markerad på fliken Format i dialogrutan Publiceringsinställningar.

  4. Klicka på mappikonen i fältet Arkiv bredvid kryssrutan Flash och markera den mapp som SWF-filen ska publiceras till. Genom att ange platsen för SWF-filen kan du (till exempel) ha dokumentet i en mapp, men lägga den publicerade SWF-filen i en annan mapp, till exempel den mapp som innehåller källkoden för behållarprogrammet.

  5. Markera nyckelbildrutan i ram 1 på tidspanelen och öppna sedan åtgärdspanelen.

  6. Kopiera ActionScript-koden för exemplet till rutan Skript.

  7. Välj Arkiv > Publicera på huvudmenyn när du vill publicera om SWF-filen.

  8. Skapa och kör behållarprogrammet för att testa kommunikationen mellan ActionScript och behållarprogrammet.

Ett komplett exempel om hur du använder ett externt API för att kommunicera med en HTML-sida finns under följande ämne: Exemplen innehåller den fullständiga koden, inklusive felsökningskod för ActionScript och behållarprogrammet, som bör användas när du skriver kod med det externa API:t. Ytterligare ett fullständigt exempel på hur du använder det externa API:t finns i klassexemplet för klassen ExternalInterface i Referens för ActionScript 3.0.