Incorporação de conteúdo SWF em HTML

Adobe AIR 1.0 e posterior

Você pode incorporar o conteúdo SWF em um conteúdo HTML do aplicativo do AIR da mesma forma que em um navegador. Incorpore o conteúdo SWF usando a tag object , a tag embed ou as duas.

Nota: Uma prática comum de desenvolvimento é usar tanto uma tag object quanto uma tag embed para exibir conteúdo SWF em uma página HTML. Essa prática não tem nenhum benefício no AIR. Você pode usar a própria tag object padrão W3C no conteúdo para ser exibido no AIR. Ao mesmo tempo, você pode continuar usando as tags object e embed juntas, se necessário, para conteúdo HTML exibido também no navegador.

Se você habilitou a transparência no objeto NativeWindow exibindo o conteúdo HTML e SWF, o AIR não exibe o conteúdo SWF quando o modo janela ( wmode ) utilizado para integrar o conteúdo estiver definido em: window . Para exibir o conteúdo do SWF em uma página HTML de uma janela transparente, configure o parâmetro wmode para opaque ou transparent . window é o valor padrão para wmode , de forma que o conteúdo pode não ser exibido se você não especificar o valor.

O seguinte exemplo ilustra o uso da tag object HTML para exibir um arquivo SWF no conteúdo HTML. O parâmetro wmode está definido para opaque de forma que o conteúdo é exibido, mesmo quando o objeto base NativeWindow for transparente. O arquivo SWF é carregado do diretório do aplicativo, mas você pode usar qualquer um dos esquemas de URL suportados pelo AIR. (O local do qual o arquivo SWF é carregado determina a caixa de proteção de segurança em que o AIR coloca o conteúdo.)

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

Você também pode usar um script para carregar conteúdo dinamicamente. O seguinte exemplo cria um nó object para exibir o arquivo SWF especificado no parâmetro urlString . O exemplo adiciona o nó como filho do elemento de página com a ID especificada pelo parâmetro 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>

O conteúdo SWF não é exibido se o objeto HTMLLoader for dimensionado ou girado, ou se a propriedade alpha estiver definida para um valor diferente de 1.0. Antes do AIR 1.5.2, o conteúdo SWF não era exibido em uma janela transparente, não importando como o valor wmode estava definido.

Nota: Quando um objeto SWF incorporado tentar carregar um ativo externo como um arquivo de vídeo, o conteúdo do SWF poderá não ser renderizado adequadamente se não for fornecido um caminho absoluto para o vídeo no arquivo HTML. Contudo, um objeto SWF incorporado pode carregar um arquivo de imagem externo usando um caminho relativo.

O exemplo a seguir demonstra como os ativos externos podem ser carregados por meio de um objeto SWF incorporado num conteúdo HTML:

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

No exemplo de ActionScript a seguir, o caminho da imagem passado pelo arquivo HTML é lido, e a imagem é carregada no palco:

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