2013-07-22 51 views
0

這似乎很愚蠢,但是有沒有辦法在變量聲明中的actionscript中創建關聯數組?Actionscript關聯數組的構造函數?

例如

private var stages:Array = [ 
    "name" : "NY Stage", 
    "location" : "New York", 
    "capacity" : 15000 
] 

相反,我做的方法是(1):聲明數組往上頂,然後創建陣列在類的構造函數的其餘部分:

private var stages:Array; 

public function PlayStage(){ 
    stages["name"] = "NY Stage"; 
    stages["location"] = "New York"; 
    stages["capacity"] = 15000; 
} 

我能做些什麼像頂部(沒有創建對象)?

回答

3

請勿使用Array來創建關聯數組。如果你閱讀Array文檔,它特別建議不要這樣做。使用Object代替。下面是該文檔的鏈接瞭解如何創建關聯數組:

Associative arrays in AS3

遍歷關聯數組的鍵(這將被用於獲取長度爲好),你可以使用這個:

var oObj:Object = { "name" : "pear", "color" : "yellow" }; 

... 

for (var key:* in oObj) 
{ 
    // do something with the key or increment a counter, etc. 
} 
+0

啊,我明白了。我也看到該對象沒有像數組(切片,拼接,長度)的任何方法,這就是爲什麼我希望使用關聯數組(而不是在需要或循環時將對象轉換爲數組)。獲取對象屬性長度的最簡單方法是什麼? – Prodikl

+0

@Prodikl我用一個小的'for'循環更新了我的答案,您可以使用它循環訪問這些鍵。您可以使用此方法創建一個函數,該函數返回您傳入的關聯數組的長度。 – xxbbcc

+0

太棒了,謝謝!並訪問該值將只是oObj [鍵],對不對? – Prodikl

1

像xxbbcc說,關聯數組實質上在AS3對象,所以簡寫對象的構造將工作:

private var stages:Object = { 
    "name" : "NY Stage", 
    "location" : "New York", 
    "capacity" : 15000 
}