Osadzanie treści SWF w kodzie HTML

Adobe AIR 1.0 i wersje późniejsze

W aplikacji AIR treść SWF można osadzić w treści HTML tak, jak przy użyciu przeglądarki. Treść SWF można osadzić za pomocą znacznika object, znacznika embed lub obu.

Uwaga: Częstą praktyką w programowaniu stron internetowych jest użycie obu znaczników object i embed w celu wyświetlenia treści SWF na stronie HTML. Ta praktyka nie przynosi korzyści w środowisku AIR. W treści można użyć samego znacznika object w standardzie W3C, aby został on wyświetlony w środowisku AIR. W razie konieczności w tym samym czasie można nadal wspólnie używać znaczników object i embed dla treści HTML, która jest również wyświetlana w przeglądarce.

W przypadku włączenia przezroczystości w obiekcie NativeWindow wyświetlającym treść HTML i SWF środowisko AIR nie wyświetla treści SWF w przypadku, gdy tryb okna (wmode) używanego do osadzania treści jest ustawiony na wartość: window. W celu wyświetlenia treści SWF na stronie HTML przezroczystego okna należy ustawić parametr wmode na wartość opaque lub transparent. Wartość window jest wartością domyślną dla wmode, dlatego w przypadku nieokreślenia wartości treść może nie być wyświetlana.

Poniższy przykład ilustruje użycie znacznika HTML object w celu wyświetlenia pliku SWF w zawartości HTML. Parametr wmode jest ustawiany na opaque, co pozwala na wyświetlenie treści, nawet jeśli zasadniczy obiekt NativeWindow jest przezroczysty. Plik SWF ładowany jest z katalogu aplikacji, ale możliwe jest użycie dowolnego schematu URL obsługiwanego przez środowisko AIR. (Lokalizacja, z której ładowany jest plik SWF, wskazuje obszar izolowany zabezpieczeń, w którym środowisko AIR umieszcza treść).

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

Można użyć również skryptu, aby załadować treść dynamicznie. Poniższy przykład tworzy węzeł object, aby wyświetlić plik SWF określony w parametrze urlString. Przykład dodaje węzeł jako element podrzędny strony z ID określonym w parametrze 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>

Treść SWF nie jest wyświetlana, jeśli obiekt HTMLLoader jest skalowany lub obracany, lub jeśli właściwość alpha zostanie ustawiona na wartość inną niż 1.0. W wersjach wcześniejszych niż AIR 1.5.2 treść SWF nie była wyświetlana w przezroczystym oknie, niezależnie od ustawionej wartości wmode.