簡介
HTML <OBJECT> 標籤的 FlashVars 參數會在網頁瀏覽器中載入時,傳送變數至 SWF 檔案的頂層。<OBJECT> 標籤用於將 SWF 檔案新增至 HTML 頁面。也可使用 <EMBED> 標籤,但此標籤較舊,現已過時。
如需使用 <OBJECT> 標籤的基礎資訊,請參閱 OBJECT 標籤語法。
備註: FlashVars 功能需使用 Flash Player 6 或更高版本。
使用 FlashVars 將數值傳遞至 SWF 檔案
您可以使用名為「FlashVars」的可選參數,將數值傳遞至 SWF 檔案的根層級。將此參數放在 <OBJECT> 標籤或較舊的 <EMBED> 標籤之中。 在播放檔案的第一個框架之前,便會將所有這些變數傳遞至 SEF 檔案。
您可以傳遞所需的變數數目,使用任何您所需的變數名稱。 所有瀏覽器均支援長度 64 KB (65535 位元組) 以下的 FlashVars 字串。
FlashVars 屬性採字串格式,是一組以「&」字元分隔的 name=value 對。
您可以使用「%」字元,後面接著合適的 2 位數十六進位值,納入特殊或非列印值字元。單一空格可使用「+」符號表示。 如需 URL 編碼特殊字元的更多資訊,請參閱 URL 編碼 (維基百科)。
下列 HTML 程式碼範例傳遞 2 個變數。第一個稱為「myVariable」,包含「Hello World」值。第二個稱為「mySecondVariable」,包含「Goodbye」值。
物件標籤範例
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="550" height="400" id="myFlashMovie" align="middle"> <param name="movie" value="myFlashMovie.swf" /> <param name=FlashVars value="myVariable=Hello%20World&mySecondVariable=Goodbye" /> <!--[if !IE]>--> <object type="application/x-shockwave-flash" data="myFlashMovie.swf" width="550" height="400"> <param name="movie" value="myFlashMovie.swf" /> <param name=FlashVars value="myVariable=Hello%20World&mySecondVariable=Goodbye" /> <!--<![endif]--> <a href="http://www.adobe.com/go/getflash"> <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /> </a> <!--[if !IE]>--> </object> <!--<![endif]--> </object>
內嵌標籤範例
<EMBED> 標籤也可用於將 SWF 檔案新增至網頁,但此為較舊的標籤,現已過時。
<embed src="myFlashMovie.swf" quality="high" bgcolor="#ffffff" width="550" height="400" name="myFlashMovie" FlashVars="myVariable=Hello%20World&mySecondVariable=Goodbye" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflash" />
瀏覽器對 FlashVars 字串所採的編碼方式,與將 HTML 頁面其餘部分編碼的方式相同。Windows 上的 Internet Explorer 提供 UTF-16 相容編碼。其他瀏覽器提供 UTF-8 相容編碼。
存取 SWF 檔案中 ActionScript 3.0 程式碼的變數
一旦將變數從 HTML 傳遞至您的 SWF 檔案後,SWF 檔案將須立即使用這些變數。
使用 ActionScript 3.0 LoaderInfo 物件存取 FlashVars 變數。
簡易範例
以下程式碼範例查詢 LoaderInfo 物件,以存取在 FlashVars 參數中名為 myVariable 並傳遞至 SWF 檔案的參數。然後將 Stage 上文字欄位的文字設為變數的字串值。
// by querying the LoaderInfo object, set the value of paramObj to the // to the value of the variable named myVariable passed from FlashVArs in the HTML var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters.myVariable; // set the text of the text instance named text1. Use the toString() method // to convert the value from an object to a string so it can be used in the text field text1.text = paramObj.toString()
您可以下載 FLA、SWF 檔案及 HTML 檔案範例,其中顯示以上使用的程式碼。
進階範例
以下程式碼範例
- 在 Stage 上建立 TextField 執行個體 (命名為 tf)。
- 使用 LoaderInfo 物件從 FlashVars 參數提取變數。
- 使用 for..in 迴圈反覆查詢每個傳遞的變數。
- 顯示文字欄位中的變數名稱及數值。
// AS3 var tf:TextField = new TextField(); // create a TextField names tf tf.autoSize = TextFieldAutoSize.LEFT; tf.border = true; addChild(tf); // add the TextField to the DisplayList so that it appears on the Stage tf.appendText("params:" + "\n"); try { var keyStr:String; var valueStr:String; var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters; //set the paramObj variable to the parameters property of the LoaderInfo object for (keyStr in paramObj) { valueStr = String(paramObj[keyStr]); tf.appendText("\t" + keyStr + ":\t" + valueStr + "\n"); // add each variable name and value to the TextField named tf } } catch (error:Error) { tf.appendText(error.toString()); }
存取 SWF 檔案中 ActionScript 2.0 程式碼的變數
在 ActionScript 2.0 中,您可以直接存取 FlashVars 變數,彷彿其在 SWF 檔案中宣告一樣。
此範例將動態文字執行個體 (稱為 text1) 的文字屬性設為 myVariable 變數的值。 myVariable 於 FlashVars 參數中宣告。
// AS2 text1.text = myVariable;
您可以下載 FLA、SWF 檔案及 HTML 檔案範例,其中顯示以上使用的 AS2 程式碼。
其他技術
亦可將變數附加至在 OBJECT 和 EMBED 標籤中所指定 SEF 檔案的 URL 中,將變數傳遞至 SEF 檔案。在此技術中,附加至 URL 的其他資訊稱為查詢字串。 如果您在 SWF 檔案載入時即需變數,此方法仍有其限制。使用此方法時,必須在伺服器可要求大量資料前下載和播放 SWF 檔案。
- 如需查詢字串技術的範例,請參閱以 ActionScript 3.0 使用 FlashVars (Adobe 部落格)。
- 如需您可藉由 OBJECT 標籤使用其他屬性的詳細資訊,請參閱 Flash OBJECT 和 EMBED 標籤屬性。
關鍵字: 傳遞; 參數; 查詢字串; 物件; 內嵌於; tn_16417