jQuery Tools 有 flashembed,它可以将 JSON 对象作为配置参数传递给嵌入的 Flash 对象。见官方页面。
但它并没有确切说明如何在 Flash 中获取 JSON 对象。这就是问题......如何?
jQuery Tools 有 flashembed,它可以将 JSON 对象作为配置参数传递给嵌入的 Flash 对象。见官方页面。
但它并没有确切说明如何在 Flash 中获取 JSON 对象。这就是问题......如何?
这取决于你是在 AS2 还是 AS3。我相信 AS2 只是在 _root 上设置变量,但我可能弄错了。在 AS3 中,您需要转到您的 root.loaderInfo.parameters 对象。所有变量都以键/值对的形式存储在那里。
例如:
myAS2Swf.swf?example=72&other="Quack"
// in the swf:
trace( _root.example ); // 72
trace( _root.other ); // Quack
// in AS3
myAS3Swf.swf?example=42&other="Duck"
// in the swf:
trace( root.loaderInfo.parameters.example ); // 42
trace( root.loaderInfo.parameters.other ); // Duck
HTML 和 JS:
<script type="text/javascript" src="js/jquery.tools.min.js"></script>
<script type="text/javascript">
$(function(){
$("#flashPlacement").flashembed(
{
src:"Main.swf"
},
{ //flashvars
myJsonObj:
{
someString:"string",
someNumber:123,
someOtherObj:
{
someString:"string2",
someNumber:456
}
}
}
);
$("#flashPlacement *").show();
});
</script>
在 Flash 部分,我使用了 Casalib的 FlashVarUtil。但是,是的,Christopher W. Allen-Poole 所说的 ( loaderInfo.parameters.myJsonObj
) 也将起到作用。(对此投赞成票)
它将是String
JSON 格式的,这是我在提问时无法弄清楚的部分。
AS3:
import com.adobe.serialization.json.JSONDecoder;
import org.casalib.util.FlashVarUtil;
import org.casalib.util.StageReference;
StageReference.setStage(stage);
var jsonString:String = FlashVarUtil.getValue("myJsonObj");
//use as3corelib's JSONDecoder
//http://code.google.com/p/as3corelib/
var obj:Object = new JSONDecoder(jsonString).getValue();
//now it can be used like...
trace(obj.someOtherObj.someString); //output: string2