2009-07-04 71 views
0

我會先告訴你函數。ArrayCollection顛倒我的對象的順序

private var areaCollection:ArrayCollection; 

private function generateAreaCollection():void 
{ 
    areaCollection = new ArrayCollection();    
    areaCollection.addItem({Areal: "Totalareal:", Verdi: int(totalArea * 100)/100 + " kvm"}); 
    areaCollection.addItem({Areal: "Hovedtakets areal:", Verdi: int(result.area* 100)/100 + " kvm"}); 

    //Lots of other stuff omitted (just more addItems). 
} 

正如你看到的,我把項目在ArrayCollection的順序是地域,然後威爾第(區,值)

當我遍歷集合後,訂單的變化。現在它是威爾第然後Areal(價值,區域)。

有沒有人有什麼可能是這個問題的想法?

當我將它傳遞給一個PHP腳本以便在以後的html中製作表格時,它確實會毀掉一些東西。 (我有幾個不同的動態數據網格大小和「值」不同,所以我不能直接指向我的PHP腳本中的f.ex「Areal」)

順便說一句,有沒有人知道我如何刪除那討厭的mx_internal_uid

回答

4

AS3中的原始對象(對象類或由{}定義的東西)沒有排序。也就是說,訂單是不可預測的。你在這裏混淆了兩個想法。 Areal和Verdi字符串是對象圖中的關鍵字。數組集合是由兩個這樣的對象組成的列表。因此,任何應用於數組集合的排序都會對這些對象進行排序,但不會排序在對象內。

所以你需要參考areaCollection.source[0].Areal得到「Totalareal」。而areaCollection.source[1].Verdi得到int(result.area* 100)/100 + " kvm"

如果你這樣做,你for(var s:String in areaCollection.source[0]) { }將遍歷兩次,「地域」和「威爾第」或反之亦然(例如,爲了不保證)的「S」是價值。

有意義嗎?如果您需要訂購,您可以將對象設爲數組["Totalareal", (int(totalArea * 100)/100 + " kvm")],然後使用[1]訪問「Verdi」。

P.s.不知道如何刪除mx_internal_id。

+0

我明白了。 另一個問題然後: 如何在ArrayGollection作爲DataGrid(Flex 3)的數據提供者時使用ArrayCollection當數組不關聯?是否有可能訪問dataField中的數組[0]? – oletk 2009-07-05 05:12:18