Bädda in SWF-innehåll i HTML

Adobe AIR 1.0 och senare

Du kan bädda in SWF-innehåll i HTML-innehåll i ett AIR-program på samma sätt som i en webbläsare. Bädda in SWF-innehållet med hjälp av en object -tagg, en embed -tagg eller båda två.

Obs! En vanlig webbkodningsmetod är att använda både en object -tagg och en embed -tagg för att visa SWF-innehåll på en HTML-sida. Det är ingen fördel att använda den här metoden i AIR. Du kan använda W3C-standardens object -tagg i innehåll som ska visas i AIR. Du kan förstås fortsätta att använda object - och embed -taggarna tillsammans, om så behövs, för HTML-innehåll som också visas i en webbläsare.

Om du har aktiverat genomskinlighet i objektet NativeWindow där HTML- och SWF-innehållet visas, så visas inte SWF-innehållet i AIR när fönsterläget ( wmode ) som används för att bädda in innehållet är inställt på värdet window . Om du vill visa SWF-innehåll på en HTML-sida i ett genomskinligt fönster ställer du in parametern wmode opaque eller transparent . Värdet window är standardinställning för wmode , så om du inte anger ett värde kanske inte innehållet visas.

Följande exempel visar hur object -taggen i HTML används för att visa en SWF-fil i HTML-innehåll. Parametern wmode är inställd på opaque så att innehållet visas, även om det underliggande NativeWindow-objektet är genomskinligt. SWF-filen blir inläst från programkatalogen men du kan använda ett URL-schema som stöds av AIR. (Den plats som SWF-filen blir inläst från bestämmer i vilken säkerhetssandlåda som AIR placerar innehållet.)

<object type="application/x-shockwave-flash" width="100%" height="100%"> 
    <param name="movie" value="app:/SWFFile.swf"></param> 
    <param name="wmode" value="opaque"></param> 
</object>

Du kan även använda ett skript för att läsa in innehåll dynamiskt. I följande exempel skapas en object -nod för att visa den SWF-fil som angetts i parametern urlString . I exemplet läggs noden till som underordnad i sidelementet med det ID som angetts av parametern elementID :

<script> 
function showSWF(urlString, elementID){ 
    var displayContainer = document.getElementById(elementID); 
    var flash = createSWFObject(urlString, 'opaque', 650, 650); 
    displayContainer.appendChild(flash); 
} 
function createSWFObject(urlString, wmodeString, width, height){ 
    var SWFObject = document.createElement("object"); 
    SWFObject.setAttribute("type","application/x-shockwave-flash"); 
    SWFObject.setAttribute("width","100%"); 
    SWFObject.setAttribute("height","100%"); 
    var movieParam = document.createElement("param"); 
    movieParam.setAttribute("name","movie"); 
    movieParam.setAttribute("value",urlString); 
    SWFObject.appendChild(movieParam); 
    var wmodeParam = document.createElement("param"); 
    wmodeParam.setAttribute("name","wmode"); 
    wmodeParam.setAttribute("value",wmodeString); 
    SWFObject.appendChild(wmodeParam);      
    return SWFObject; 
} 
</script>

SWF-innehåll visas inte om objektet HTMLLoader är skalat eller roterat, eller om egenskapen alpha är inställd på ett annat värde än 1.0. Före AIR 1.5.2 visades inte SWF-innehåll i ett genomskinligt fönster oavsett vilket wmode -värde som var angivet.

Obs! När ett inbäddat SWF-objekt försöker läsa in en extern resurs, som en videofil, kan det hända att SWF-innehållet inte återges korrekt om ingen absolut sökväg till videofilen anges i HTML-filen. Ett inbäddat SWF-objekt kan däremot läsa in en extern bildfil med en relativ sökväg.

Följande exempel visar hur externa resurser kan läsas in via ett SWF-objekt som bäddats in i HTML-innehåll:

    var imageLoader; 
     
    function showSWF(urlString, elementID){ 
        var displayContainer = document.getElementById(elementID); 
        imageLoader = createSWFObject(urlString,650,650); 
        displayContainer.appendChild(imageLoader); 
    } 
 
    function createSWFObject(urlString, width, height){ 
    
        var SWFObject = document.createElement("object"); 
            SWFObject.setAttribute("type","application/x-shockwave-flash"); 
            SWFObject.setAttribute("width","100%"); 
            SWFObject.setAttribute("height","100%"); 
             
        var movieParam = document.createElement("param"); 
            movieParam.setAttribute("name","movie"); 
            movieParam.setAttribute("value",urlString); 
            SWFObject.appendChild(movieParam); 
             
        var flashVars = document.createElement("param"); 
            flashVars.setAttribute("name","FlashVars");    
    
        //Load the asset inside the SWF content. 
            flashVars.setAttribute("value","imgPath=air.jpg");    
            SWFObject.appendChild(flashVars); 
    
        return SWFObject; 
    } 
    function loadImage() 
    { 
      showSWF("ImageLoader.swf", "imageSpot"); 
      
    }

I följande ActionScript-exempel läses den bildsökväg som skickas av HTML-filen och bilden läses in på scenen:

package 
{ 
      import flash.display.Sprite; 
      import flash.display.LoaderInfo; 
      import flash.display.StageScaleMode; 
      import flash.display.StageAlign; 
      import flash.display.Loader; 
      import flash.net.URLRequest; 
      
      public class ImageLoader extends Sprite 
      { 
            public function ImageLoader() 
            { 
                  
                  var flashvars = LoaderInfo(this.loaderInfo).parameters; 
                  
                  if(flashvars.imgPath){ 
                        var imageLoader = new Loader(); 
                        var image = new URLRequest(flashvars.imgPath); 
                        imageLoader.load(image); 
                        addChild(imageLoader); 
                        imageLoader.x = 0; 
                        imageLoader.y = 0; 
                        stage.scaleMode=StageScaleMode.NO_SCALE;                    
                        stage.align=StageAlign.TOP_LEFT; 
                  } 
            } 
      } 
}