0

我将首先向您展示该功能。

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 的顺序是 Area,然后是 Verdi (area, value)

当我稍后遍历集合时,顺序会改变。现在是威尔第,然后是面积(价值,面积)。

有谁知道可能是什么问题?

当我稍后将它传递给 PHP 脚本以在 html 中制作表格时,它真的会毁掉一些东西。(我有几个不同的动态 DataGrids,它们的大小和“值”不同,所以我不能在我的 PHP 脚本中直接指向 f.ex“Areal”)

顺便说一句,有谁知道我怎样才能消除那个讨厌的东西mx_internal_uid

4

1 回答 1

4

AS3 中的原始对象(对象类,或 {} 定义的事物)没有排序。也就是说,顺序是不可预测的。我认为你在这里混淆了两个想法。Area 和 Verdi 字符串是对象映射中的键。数组集合是由两个这样的对象组成的列表。因此,应用于数组集合的任何排序都会对这些对象进行排序,但不会在对象内排序。

所以你需要参考areaCollection.source[0].Areal得到“Totalalreal”。并areaCollection.source[1].Verdi得到int(result.area* 100) / 100 + " kvm"

如果你这样做for(var s:String in areaCollection.source[0]) { },你将迭代两次,“s”的值是“Areal”和“Verdi”,反之亦然(例如,订单不保证)。

有道理?如果您需要顺序,您可以将对象改为数组["Totalareal", (int(totalArea * 100) / 100 + " kvm")],然后使用 [1] 访问“Verdi”。

Ps 不确定如何删除 mx_internal_id。

于 2009-07-05T01:26:09.713 回答