在 HTML 中嵌入 SWF 內容

Adobe AIR 1.0 以及更新的版本

您可以在 AIR 應用程式的 HTML 內容中嵌入 SWF 內容,就像在瀏覽器的 HTML 內容中嵌入 SWF 內容一樣。使用 object 標籤、embed 標籤或兩者,即可嵌入 SWF 內容。

備註: 常見的網頁開發作法,是同時使用 object 和 embed 標籤,在 HTML 網頁中顯示 SWF 內容。這種作法在 AIR 中並沒有優點,您可以只在內容中使用符合 W3C 標準的 object 標籤本身,在 AIR 中顯示內容。同時,對於也會在瀏覽器中顯示的 HTML 內容,您也可以繼續使用 object 和 embed 標籤兩者。

如果您已在顯示 HTML 和 SWF 內容的 NativeWindow 物件中啟用透明度,則當用來嵌入內容的視窗模式 (wmode) 值設定為:window 時,AIR 不會顯示 SWF 內容。 若要在透明視窗的 HTML 頁面中顯示 SWF 內容,請將 wmode 參數設定為 opaque 或 transparent。 window 是 wmode 的預設值,因此如果您沒有指定值,則內容可能無法顯示。

在下列範例中,會示範如何使用 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>

您也可以使用 Scrip 動態載入內容。下列範例會建立 object 節點,以顯示 urlString 參數中指定的 SWF 檔。在範例中,會加入該節點做為網頁元素的子系,而這個網頁元素的 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>

縮放或旋轉 HTMLLoader 物件,或將 alpha 屬性值設為 1.0 以外的值,都無法顯示 SWF 內容。在 AIR 1.5.2 之前的版本中,無論 wmode 的值設定為何,都無法在透明視窗中顯示 SWF 內容。