2010-11-10 60 views
2

是否有可能将本机JavaScript对象(如数组和散列图对象)传递给带有SWFObject的Flash Player?使用SWFObject的复杂FlashVar对象?

基本上,我需要传递对象从JavaScript在Flash变数闪存阵列,所以这是我的代码:

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

当我在Flex对象,我只是得到一个字符串,看起来像这样:“[对象对象],[对象对象]”,这使我相信我的数组在串入Flash之前被序列化为字符串。有没有已知的解决方法?

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

+1

你不必以这种方式传递Flash变量,实际上你不能,至少不会像你在这里展示的那样。你*可以做的就是让它连接到服务器并获取数据,然后让应用程序开始运行。显示进度条,直到数据到达。 – Robusto 2010-11-10 21:27:01

+0

死了,谢谢。我忘了Flash vars只是URL变量,而不是实际的JavaScript对象 – 2010-11-10 21:45:49

回答

0

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

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

6

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

2

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

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

正如评论中的建议,您可以让Flash从服务器本身请求数据,这可以通过很多方式完成。