2009-04-16 50 views
1

我有一個Flash電影正在用於多個網站。在每個站點上,我想在標記中指定一個不同的XML文件。我如何獲取該字符串並在ActionScript中使用它?將字符串從<object>中的html傳遞到Actionscript

在標記

我想這樣做:

<object ... 
    <param name=FlashVars value="urlXML=myXML.xml" /> 
</object> 

在ActionScript 3.0中,我嘗試這樣做:

var urlXML=_root.urlXML; 

目前,我這樣做的時候,我在輸出得到一個錯誤說'訪問未定義的屬性......'我該如何抓住那個字符串?

+0

這是一個相當常見的錯誤,當人們移動到AS3。您應該用答案更新問題或編寫自己的答案,以便其他找到此條目的人員可以更輕鬆地找到答案。 或posible使它成爲一個維基。 – 2009-04-16 20:08:43

+0

忘記提及swfobject。你應該看看它嵌入你的閃存對象。 http://code.google.com/p/swfobject/ – 2009-04-16 20:10:14

回答

1

這不是你如何訪問AS3中的FlashVars。您需要root loaderInfo的參數屬性,該屬性包含所有加入的FlashVars。


var urlXML: String = root.loaderInfo.parameters.urlXML; 
0

注:Adobe KB article

Flash變數必須在兩個對象和嵌入標籤的順序分配到所有的瀏覽器。

-1

它應該在那裏 - 你不需要_root。請參閱this

+0

這是在AS2中。但我找到了解決方案。我需要這行代碼: var urlXML = loaderInfo.parameters.urlXML; – AyexeM 2009-04-16 18:57:35

0

我的第一反應......所以這裏有雲:

我有我的麥吉爾大學校友會開發的一個小視頻播放器應用程序。 你可以在這裏看到它: http://www.alumni.mcgill.ca/esol/holiday/2008/flash.php?giftCode=123456 它從URL中挑選一個'禮物代碼',但你總是可以對你的.xml文件進行硬編碼。

這裏是對象和嵌入(一個或多個)使用:

<embed src="mcgill_annual_fund200903.swf**?giftCode=<?php echo $giftCode; ?>**" quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="680" height="550"></embed> 

並與嵌入的.js腳本:

<script type="text/javascript"> 

AC_FL_RunContent( '代碼庫', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0','寬度','680','height','550','src','mcgill_annual_fund200903 **?giftCode = **','quality','high','pluginspage','http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash','movie' mcgill_annual_fund200903?giftCode =','wmode','transparent'); //結束AC碼

然後檢索信息在AS3:

//get the giftCode 
var gCode:String; 
var giftCode:String; 
function loaderComplete(lEvent:Event){ 
    gCode = loaderInfo.loaderURL; 
    giftCode = gCode.substr((gCode.indexOf("?giftCode=")+10)); 
    //giftCodeTxt.text= giftCode; 
}