SWF içeriğini tarayıcıda olduğu gibi AIR uygulamasında da HTML içeriğine gömebilirsiniz. SWF içeriğini
object
etiketini,
embed
etiketini veya her ikisini de kullanarak gömün.
Not:
SWF içeriğini HTML sayfasında görüntülemek için
object
etiketi ve
embed
etiketinin her ikisini de kullanmak, yaygın bir web geliştirme uygulamasıdır. Bu uygulamanın AIR'de hiçbir yararı yoktur. AIR'de görüntülenmesi için içerikteki W3C standart
object
etiketinin kendisini kullanabilirsiniz. Aynı zamanda, tarayıcıda da görüntülenen HTML içeriği için gerektiğinde
object
ve
embed
etiketlerinin ikisini birlikte kullanmaya devam edebilirsiniz.
HTML ve SWF içeriğini görüntüleyen NativeWindow nesnesinde saydamlığı etkinleştirdiyseniz, içeriği gömmek için kullanılan pencere modu (
wmode
)
window
değerine ayarlandığında, AIR SWF içeriğini görüntülemez. Saydam bir pencerenin HTML sayfasında SWF içeriğini görüntülemek için
wmode
parametresini
opaque
veya
transparent
olarak ayarlayın.
window
,
wmode
için varsayılan değerdir, bu yüzden bir değer belirtmezseniz içeriğiniz görüntülenemeyebilir.
Aşağıdaki örnek, bir SWF dosyasını HTML içeriğinde görüntülemek için HTML
object
etiketinin kullanımını gösterir.
wmode
parametresi
opaque
olarak ayarlanmıştır, bu nedenle temeldeki NativeWindow nesnesi saydam olsa bile içerik görüntülenir. SWF dosyası uygulama dizininden yüklenir, ancak AIR tarafından desteklenen herhangi bir URL şemasını kullanabilirsiniz. (SWF dosyasının yüklendiği kaynak, AIR'in içeriği yerleştirdiği güvenlik sanal alanını belirler.)
<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>
İçeriği dinamik olarak yüklemek için bir komut dosyası da kullanabilirsiniz. Aşağıdaki örnek,
urlString
parametresinde belirtilen SWF dosyasını görüntülemek üzere bir
object
düğümü oluşturur. Örnek, düğümü
elementID
parametresiyle belirtilen kimliğe sahip sayfa öğesinin alt öğesi olarak ekler.
<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>
HTMLLoader nesnesi ölçeklenirse veya döndürülürse ya da
alpha
değeri 1.0'dan başka bir değere ayarlanırsa SWF içeriği görüntülenmez. AIR 1.5.2'den önce, SWF içeriği hangi
wmode
değeri ayarlı olursa olsun saydam pencerede görüntülenmezdi.
Not:
Gömülü bir SWF nesnesi video dosyası gibi harici bir varlık yüklemeyi denediğinde, HTML dosyasında video dosyasına kesin bir yol sağlanmamışsa SWF içeriği düzgün bir şekilde oluşturulamayabilir. Ancak, gömülü bir SWF nesnesi göreli bir yol kullanarak harici bir görüntü dosyası yükleyebilir.
Aşağıdaki örnek, harici varlıkların HTML içeriğinde gömülü bulunan SWF nesnesi aracılığıyla nasıl yüklenebileceğini gösterir:
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");
}
Aşağıdaki ActionScript örneğinde, HTML dosyası tarafından iletilen görüntü yolu okunur ve görüntü sahne alanına yüklenir:
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;
}
}
}
}