簡介

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 檔案。

關鍵字: 傳遞; 參數; 查詢字串; 物件; 內嵌於; tn_16417

此産品由 Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License 授權  Creative Commons 條款未涵蓋 Twitter™ 與 Facebook 文章。

法律說明   |   線上隱私權政策