使用SWFObject的复杂FlashVar对象?

时间:2010-11-10 21:21:40

标签: javascript flash actionscript-3 swfobject

是否可以使用SWFObject将本机JavaScript对象(如数组和类似哈希映射的对象)传递给Flash Player?

我基本上需要在Flash变量中从JavaScript传递一个对象数组到Flash,所以这是我的代码:

swfobject.embedSWF("application.swf", "divvy" "100%", "100%", null,
    { 'info': [
        { 'id': 1, 'name': "Hello, John" },
        { 'id': 2, 'name': "Hello, Dave" }
    }]);

当我在Flex中获取对象时,我只是得到一个如下所示的字符串:“[Object object],[Object object]”这使我相信在进入Flash之前我的数组被序列化为String。有没有已知的解决方法?

是的,我确实需要以这种方式传递Flash变量,因为它们会关闭一些在应用程序启动之前必须执行的加载。

3 个答案:

答案 0 :(得分:6)

使用as3corelib中的JSON lib并将整个对象编码为json对象,并在反序列化后成为flash对象。您可能需要对json字符串进行urlencode以将其作为字符串传递,一旦进入as3它将被解除编码,并且您可以使用as3corelib的json函数对其进行反序列化,并且您将在flash中有一个表示数据的对象

答案 1 :(得分:2)

复杂对象必须通过flashvars作为字符串发送,然后您可以使用as3corelib的JSON解析器来读取它。

或者,您可以使用ExternalInterface调用javascript函数来按原样返回对象。

正如评论中所建议的那样,你可以让Flash从服务器本身请求数据,这有很多方法可以做到。

答案 2 :(得分:0)

答案:正如上面提到的@Robusto ,无法通过Flashvars将原生JavaScript对象传递给Flash Player 。我忘了Flash变量只是SWF的GET参数,仅此而已。因此,application.swf?r=123swfobject.embedSWF('application.swf', '100%', '100%', null, {'r': 123}, null);

相同

我可能只是加载一些XML或其他东西。