2011-10-24 15 views
1

我想使用flash vars將參數傳遞給我的swf文件。我正在使用Swfobject來嵌入我的swf。但是,我無法在swf文件中訪問這些flashvars。現在我已經有幾個星期遇到麻煩了。我已經搜索了互聯網,swfobject的文檔以及與此相關的其他問題。Flashvars未定義

這是我使用swfobject嵌入swf文件的js代碼。

<script type="text/javascript" src="swfobject.js"></script> 
<script type="text/javascript"> 
var flashvars = {}; 
flashvars.name1 = "hello"; 
swfobject.embedSWF("Comics.swf", "myContent", "950", "650","9.0.0","expressInstall.swf", flashvars, flashvars,flashvars); 
</script> 

這是我的HTML代碼可以用於嵌入

<div id="myContent"></div> 

瑞士法郎嵌入細併產生下列

<object type="application/x-shockwave-flash" name1="hello" data="Comics.swf" width="950" height="650" id="myContent" style="visibility: visible; "> 
    <param name="name1" value="hello"> 
    <param name="flashvars" value="name1=hello"> 
</object> 

同樣,SWF被嵌入細。我可以看到內容,但flashvars似乎爲空。 這裏是一個嘗試訪問的flashvars

var flashVars = root.loaderInfo.parameters; 
addChild(Util.newLabel(" FlashVars: " + flashVars+" "+root.loaderInfo,0,0,400,100,12,0x0));   


var y=0; 
for(var i in flashVars){ 
    addChild(Util.newLabel("FlashVars:"+i+":"+flashVars[i],0,y+=30,300,100,12,0x0)); 
} 

的Util是一個自定義類,我做了其中newLabel(STR我的閃存代碼:字符串中,x:編號,y:編號,W:號碼,H:數字和fontSize :uint,color:uint)是一種返回標籤組件的方法,其中str爲文本,x和y爲位置,w和h爲尺寸等。我非常確定util的工作方式,所以我想知道我如何真正加載flashvars?

運行此代碼時,我應該看到一個變量名稱列表。

PS:上面的flash代碼在主時間線(即使用flash ide編譯我的代碼)中編碼,而在第一幀中,而Util則作爲文件單獨編碼。主時間軸中第一幀中的根對象是[對象MainTimeline]。

讓我知道你是否需要更多信息。提前致謝。

+0

你的參數應該是** flashVars中[「名稱1」] ** – danii

+0

我想,但我仍然得到未定義:( – GrandPhuba

回答

1

Flash通過獲取URL中的變量或flashvars來獲取變量,並且它們是鍵/值對。所以基本上,如果你有這樣的URL:

http://someurl.com/flashmovie.swf?testVariable=101&testVariable2=tank 

testVariable是關鍵,101是值,你可以如下得到這些鍵/值對;

//creating a textfield for debugging 
var _textField:TextField = new TextField(); 
_textField.autoSize = TextFieldAutoSize.LEFT; 
_textField.border = true; 
addChild(_textField); 

//flashvars code 
try { 
    var valueString:String; 
    var keyString:String; 
    var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters; 
    for (keyString in paramObj) { 
     valueString = String(paramObj[keyString]); 
     _textField.appendText("\t" + keyString + ":\t" + valueString + "\n"); 
    } 
}catch (error:Error) { 
    _textField.appendText(error.toString()); 
} 

希望這有助於乾杯

1

我剛剛成立嵌入一個SWF就像你的HTML頁面(其實,我複製/粘貼您的代碼),然後在我的Flash我把下面的(簡單)的代碼:

import flash.text.TextField; 

var myTextField:TextField = new TextField();  

var flashVars = root.loaderInfo.parameters; 

myTextField.text = flashVars["name1"]+"!"; 

addChild(myTextField); 

當我打開HTML頁面時,我會收到一個很好的「你好!」在預期的屏幕上。很顯然,我不能試試你的標籤的創造者組成,但線是:

addChild(Util.newLabel(flashVars["name1"]+"!",0,0,400,100,12,0x0));   

如果不行,我會說你有某種錯誤的你Util.newLabel內(),我的建議是嘗試我的簡單版本,看看你是否可以這樣訪問flashvars(你不應該有任何麻煩),然後檢查其他東西是怎麼回事。

希望這會有所幫助!