2010-11-10 42 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從服務器本身請求數據,這可以通過很多方式完成。