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
på
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;
}
}
}
}