Actionscript 3 在AS3中解码JSON FlashVars
我正在努力通过FlashVars将JSON对象传递给.swf,并在AS3中解码JSON FlashVars,希望您能帮助我 问题: 我得到了一个Actionscript 3 在AS3中解码JSON FlashVars,actionscript-3,json,flashvars,Actionscript 3,Json,Flashvars,我正在努力通过FlashVars将JSON对象传递给.swf,并在AS3中解码JSON FlashVars,希望您能帮助我 问题: 我得到了一个JSONParseError:当我尝试解码FlashVars时遇到了意外的 情况: PHP函数从散列创建图像路径,并将它们放在这个JSON对象中: [{"index":"0", "path":"image1", "ext":"jpg"}, {"index":"1", "path":"image2", "ext":"jpg"}, {"index":"2",
JSONParseError:当我尝试解码FlashVars时遇到了意外的
情况:
PHP函数从散列创建图像路径,并将它们放在这个JSON对象中:
[{"index":"0", "path":"image1", "ext":"jpg"},
{"index":"1", "path":"image2", "ext":"jpg"},
{"index":"2", "path":"image3", "ext":"jpg"}]
此JSON通过Flashvars传递给.swf。在HTML中,我有以下内容:
<param name="FlashVars" value='[{"index":"0", "path":"image1", "ext":"jpg"},{"index":"1", "path":"image2", "ext":"jpg"},{"index":"2", "path":"image3", "ext":"jpg"}]'/>
“imagePaths”保存JSON对象,以便以后可以构造图像的路径。据我所知,当我从单独的txt文件在localhost上加载完全相同的JSON时,JSON.decode返回一个正确的结果,其中包含:
var imagePathLoader:URLLoader = URLLoader(e.target);
imagePaths = JSON.decode(imagePathLoader.data);
错误显然发生在try块中,因此我使用trace(paramObj.toString())跟踪paramObj变量
并获取[object object]
作为输出。
在我看来,JSON解码函数试图解码字符串[object object]
,而不是对象本身,因此在“object”的第一个“o”处抛出错误
在作为FlashVars传递之前,我已经尝试从PHP对JSON进行urlencode()编码,在上找到了建议,并执行了JSON.decode(paramObj)代码>不带引发此错误的.toString():
1118:值的隐式强制
将静态类型对象
不相关的类型字符串
那么,如何将JSON正确地传递给.swf并在AS3中将其解码为对象呢
提前感谢您提供的任何帮助表明FlashVar的正确用法是:
<PARAM NAME=FlashVars VALUE="varname=value">
或
root.loaderInfo.parameters.myvariable
或者如果你喜欢这种方式
var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;
然后
或
paramObj.myvariable
谢谢您的回复。我昨天也发现了这一点,但在8小时内无法回答我自己的问题(新用户…)。我所做的:
在嵌入swf的HTML文件中:
<param name="FlashVars" value="var=urlencode([{"index":"0", "path":"image1", "ext":"jpg"},
{"index":"1", "path":"image2", "ext":"jpg"},
{"index":"2", "path":"image3", "ext":"jpg"}])"/>
然后像往常一样处理JSON对象..谢谢你的帮助 您尝试过JSON.encode()吗?Decode尝试将JSON格式的字符串解析为对象。Encode将actionscript对象转换为JSON格式的字符串。不知道是否是这种情况,但在提出问题时,我甚至不关心IE支持。。
<param name="FlashVars" value='myvariable=[{"index":"0", "path":"image1", "ext":"jpg"},{"index":"1", "path":"image2", "ext":"jpg"},{"index":"2", "path":"image3", "ext":"jpg"}]'/>
root.loaderInfo.parameters["myvariable"]
var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;
paramObj["myvariable"]
<param name="FlashVars" value="var=urlencode([{"index":"0", "path":"image1", "ext":"jpg"},
{"index":"1", "path":"image2", "ext":"jpg"},
{"index":"2", "path":"image3", "ext":"jpg"}])"/>
var imagePaths:Object;
var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;
var myFlashVar:String;
var varName:String;
for (varName in paramObj) {
myFlashVar = String(paramObj[varName]);
}
imagePaths = JSON.decode(myFlashVar);