2012-01-26 81 views
2

我有一個SWF,我稱之爲作爲獲取SWF布爾參數

/SWFUploader/upload.swf?single=true

然後在ActionScript 3我在值讀取。但它不起作用。這裏是我的測試代碼(第一個塊是從http://blogs.adobe.com/pdehaan/2006/07/using_flashvars_with_actionscr.html取):

var keyStr:String; 
var valueStr:String; 
var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters; 
for (keyStr in paramObj) { 
    valueStr = String(paramObj[keyStr]); 
    trace(keyStr + " = " + valueStr); 
} 

var isSingle:Boolean = this.loaderInfo.parameters.single as Boolean; 
var isSingle1:Boolean = this.loaderInfo.parameters['single'] as Boolean; 
var isSingle2:Boolean = LoaderInfo(this.root.loaderInfo).parameters['single'] as Boolean; 
var isSingle3:Boolean = LoaderInfo(this.root.loaderInfo).parameters.single as Boolean; 
trace(isSingle + ", " + isSingle1 + ", " + isSingle2 + ", " + isSingle3); 

而令人沮喪的這是追蹤所產生的兩行:

single = true 
false, false, false, false 

我在做什麼錯?

+0

啊,這是一個鑄造問題。如果我用String代替了上面的一些代碼而不是布爾值,那麼所有的跟蹤都是「真實的」。所以我的問題可能只是:如何在ActionScript中將參數值String:「true」轉換爲Boolean:true(爲什麼它不會發生)? – dumbledad

+0

如果你想獲得一個變量的類型,試試這個'trace(typeof(isSingle));' – mgraph

+0

感謝mgraph,這是一個用於調試這類問題的有用的ActionScript。 – dumbledad

回答

6

在ActionScript中不爲空且不爲空字符串被轉換爲布爾值true

var singleStr:String = this.loaderInfo.parameters.single; 
var singleBool:Boolean = singleStr == "true"; 
+0

那第二行並不是真正的演員陣容,但它的效果非常好。謝謝。 – dumbledad