2012-01-26 55 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