2010-07-13 101 views
1

我傳遞一個Javascript Array()通過FlashVars但是Flash抱怨閃爍。你們能指出我在這裏做錯了什麼嗎?JavaScript是傳遞對象的數組,而不是一個數組的數組的

JavaScript代碼

// array with the user defined cities 
var usercities = new Array( 
    {'nome':"London", 'lat':51.5002, 'long':-0.1262 }, 
    {'nome':"NYC", 'lat':51.5002, 'long':-0.1262 } 
); 

flashvars.newcities = usercities; 

閃存代碼

// this array is pre-populated so if the users doesn't enter data this is shown 
var cities:Array = new Array(
    { nome:"London", lat:51.5002, long:-0.1262 }, 
    { nome:"NYC", lat:40.7144, long:-74.0060 } 
); 

// gets FlashVars 
var newcities:Object = LoaderInfo(this.root.loaderInfo).parameters.newcities; 
if(newcities != null) { 
    cities = newcities; 
}; 

不工作。我需要完全按照Flash側的cities陣列。在JavaScript方面所有的代碼都可以改變。

謝謝你的幫助。

+0

所以你想要usercities作爲陣列數組傳遞? – spinon 2010-07-13 19:41:04

+1

我認爲你必須以某種系列化你'usercities' – 2010-07-13 19:41:27

+0

@spinon,正確的,我想它作爲一個數組的數組傳遞...但它得到的對象數組過去了...... – Frankie 2010-07-13 19:43:05

回答

0

截止了傳遞值,因爲這:

的JavaScript

var cities = new Array( 
    Array("London", 51.5002, -0.1262), 
    Array("NYC", 40.7144, -74.0060), 
); 

那一剎那變得作爲一個純粹的字符串。

"London",51.5002,-0.1262,"NYC",40.7144,-74.0060 

然後我分解了字符串並轉換爲數組。這有點髒,但最終的作品。只要Array每行總是有3個項目,並且沒有項目有逗號。

希望這可以幫助別人。

0

那麼你可以手動進行他們的陣列。這樣的事情:

var usercities = []; 
usercities[0] = []; 
usercities[0]["nome"] = "London"; 
usercities[0]["lat"] = 51.5002 
usercities[0]["long"] = -0.1262 
usercities[1] = []; 
usercities[1]["nome"] = "NYC"; 
usercities[1]["lat"] = 51.5002 
usercities[1]["long"] = -0.1262 

雖然我認爲它是一樣的,但閃光燈可能會看到它不同。

+0

其實這證明成爲兩個空陣列。滑稽。仍在努力去做。 – Frankie 2010-07-13 22:26:37

+0

這太糟糕了。那麼爲什麼不使用一組對象呢? – spinon 2010-07-13 22:55:57

+0

好吧...只是走了簡單的路。更改了所有閃存代碼以按位置[0],[1],[2]引用項目,並將該數組作爲以逗號分隔的字符串傳遞。在Flash上​​分解該字符串並轉換爲數組。不漂亮,但工程。感謝您的幫助。 – Frankie 2010-07-13 23:32:24

1

JavaScript沒有關聯數組和其它語言一樣。爲了有命名索引,你必須使用一個對象。被賦值爲一個具有指定索引的數組將被轉換爲一個對象。

爲了做到這一點,你可能需要更改您的Flash代碼。正如meder所說,序列化你的陣列是你最好的選擇。我建議在JavaScript中使用JSON編碼,並在Flash中使用解碼。

+0

我可能必須按照你的說法序列化它。試圖解析它到目前爲止沒有任何結果... – Frankie 2010-07-13 22:47:52

相關問題