SWF içeriğini HTML'e gömme

Adobe AIR 1.0 ve üstü

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