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 に項目を配置する順序は Areal、次に Verdi (面積、値) です。

後でコレクションをループすると、順序が変わります。今はヴェルディ、そしてエリアル(値、面積)です。

何が問題なのか考えている人はいますか?

後でhtmlでテーブルを作成するためにPHPスクリプトに渡すと、本当に台無しになります。(サイズと「値」が異なるいくつかの異なる動的DataGridがあるため、PHPスクリプトでf.ex「Areal」を直接指すことはできません)

ところで、その厄介な問題を取り除く方法を知っている人はいmx_internal_uidますか?

4

1 に答える 1

4

AS3の生のオブジェクト(オブジェクトクラス、または{}で定義されたもの)には、並べ替えがありません。つまり、順序は予測できません。ここで2つのアイデアを混同していると思います。Areal文字列とVerdi文字列は、オブジェクトマップ内のキーです。配列コレクションは、そのような2つのオブジェクトで構成されるリストです。したがって、配列コレクションに適用された並べ替えは、それらのオブジェクトを並べ替えますが、オブジェクト内では並べ替えません。

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」、またはその逆の2回繰り返されます(たとえば、順序は保証されません)。

わかる?順序が必要な場合は、代わりにオブジェクトを配列に["Totalareal", (int(totalArea * 100) / 100 + " kvm")]してから、[1]を使用して「Verdi」にアクセスできます。

PSはmx_internal_idを削除する方法がわかりません。

于 2009-07-05T01:26:09.713 に答える