我会先告诉你这个功能。
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,然后是Verdi(区域,值)
当我稍后循环收集时,订单会发生变化。现在是Verdi然后是Areal(价值,面积)。
有没有人知道可能出现什么问题?
当我将它传递给PHP脚本以便稍后在html中制作表格时,它确实会破坏一些东西。 (我有几个不同的动态DataGrids,大小和“值”不同,所以我不能直接指向我的PHP脚本中的f.ex“Areal”)
顺便说一下,有没有人知道如何删除那个讨厌的mx_internal_uid
?
答案 0 :(得分: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”的值为“Areal”和“Verdi”,反之亦然(例如,顺序无法保证)。
有意义吗?如果您需要订购,可以将对象改为数组["Totalareal", (int(totalArea * 100) / 100 + " kvm")]
,然后使用[1]访问“Verdi”。
P.S。不确定如何删除mx_internal_id。