在 HTML 中嵌入 SWF 内容

Adobe AIR 1.0 和更高版本

在 AIR 应用程序中,可以像在浏览器中那样,在 HTML 中嵌入 SWF 内容。使用 object 标签、embed 标签或同时二者可嵌入 SWF 内容。

注: 常见的 Web 开发做法是同时使用 object 标签和 embed 标签在 HTML 页中显示 SWF 内容。此做法在 AIR 中毫无益处。您可以只使用 W3C 标准的 object 标签在 AIR 中显示内容。同时,对于浏览器中显示的 HTML 内容,您可以继续同时使用 objectembed 标签(如果需要)。

如果在显示 HTML 和 SWF 内容的 NativeWindow 对象中启用了透明度,则用于嵌入内容的窗口模式 (wmode) 设置为 window 时,AIR 不会显示 SWF 内容。要在透明窗口的 HTML 页中显示 SWF 内容,请将 wmode 参数设置为 opaquetransparentwindowwmode 的默认值,因此如果不指定值,则可能不会显示所需内容。

以下示例说明如何使用 HTML object 标签在 HTML 内容中显示 SWF 文件。应将 wmode 参数设置为 opaque 才可显示内容,即使基础 NativeWindow 对象是透明的。SWF 文件加载自应用程序目录,但您可以使用 AIR 支持的任何 URL 方案。(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 节点,用于显示 urlString 参数中指定的 SWF 文件。该示例将此节点添加为页面元素的子元素,并使用 elementID 参数来指定 ID:

<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 对象或者将 alpha 属性设置为 1.0 之外的任何值,则不会显示 SWF 内容。在早于 AIR 1.5.2 的版本中,无论将 wmode 值设置为何值,透明窗口中都不显示 SWF 内容。