Вложение SWF-содержимого в HTML

Adobe AIR 1.0 и более новых версий

В приложении AIR SWF-содержимое можно встроить в HTML-содержимое точно так же, как в обозревателе. Встроить SWF-содержимое можно с помощью тега object, тега embed или обоих.

Примечание. Общие рекомендации по веб-разработке предполагают использование и тега object, и тега embed для отображения SWF-содержимого на HTML-странице. Эти рекомендации не помогут при работе с AIR. Тег object стандарта W3C может сам по себе использоваться в содержимом, отображаемом в AIR. В то же время теги object и embed могут при необходимости использоваться вместе — такая необходимость может возникнуть при отображении HTML-содержимого в обозревателе.

Если в объекте NativeWindow, отображающим содержимое HTML и SWF, включена прозрачность, то AIR не отобразит содержимое SWF, если режим окна (wmode), в которое внедрено содержимое, принимает значение window. В данном случае для отображения содержимого SWF на прозрачной странице HTML задайте для параметра wmode значение opaque или transparent. По умолчанию параметр wmode использует значение window, поэтому содержимое может не отображаться, если не задать требуемое значение.

В примере ниже показано, как с помощью тега HTML object отобразить SWF-файл в содержимом HTML. Параметру wmode присваивается значение opaque, чтобы содержимое отображалось даже в том случае, когда под ним находится прозрачный объект NativeWindow. SWF-файл загружается из каталога приложения, но использоваться может любая схема URL-адресов, поддерживаемая AIR. (Расположение, из которого загружается SWF-файл, определяет защищенную изолированную программную среду, в которую AIR помещает содержимое.)

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

Можно также загрузить содержимое динамически при помощи сценария. В следующем примере узел object создается для отображения SWF-файла, заданного параметром urlString. В примере узел добавляется в качестве дочернего элемента страницы с ID, указанным в параметре 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 не отображается при изменении масштаба или повороте объекта HTMLLoader, а также если свойству alpha присвоено значение, отличное от 1.0. В версиях, предшествовавших AIR 1.5.2, содержимое SWF не отображалось в окне с прозрачностью при любых значениях wmode.