ArrayCollectionリストのdataProviderとして機能するを持っています。
コレクションには、次のタイプのオブジェクトが格納されますMyObject。
public class MyObject {
    public var myMap:Dictionary;
}
myMapキーと値のペアを格納します。キーはintegerで、値は文字列です。
これまでのところ、制約についてです。私が今やりたいのは、マップのフィールドに基づいてコレクションを並べ替えることです。
自分の関数でArrayCollection's関数を使用すると機能します。これが私がそれを実装した方法です:sortcompareFunction
    var key:int = 15;
    var sort:Sort = new Sort();
    sort.compareFunction = fidSort;
    myCollection.sort = sort;
    myCollection.refresh();
    private function fidSort(a:Object, b:Object, fields:Array = null):int {
        if(a.myMap[key].fieldValue == b.myMap[key].fieldValue) {
            return 0;
        } else if(a.myMap[key].fieldValue > b.myMap[key].fieldValue) {
            return 1;
        } else{
            return -1;
        }
    }
私が言ったように、それはソートのために機能します。ただし、当然、(コレクションのプロパティである)並べ替えは、コレクションから特に削除されない限り、コレクションに残ります。つまり、マップ内の値がMyObject変更されるたびに、compare関数に従って並べ替えられます。
必要なのは、並べ替えを1回だけ適用することです。その後、マップ値で何が起こっても、コレクションの並べ替えは変更されません。
コレクションの自動更新を無効にするなどの方法を試しました(コレクションが更新を取得しなくなるため、当然機能しません(ただし、キャッシュされるだけです))。その後、基になる配列のソートに関するこの投稿を読みました。myMap[key].fieldValueただし、で見つからなかったというコンパイルエラーが発生するため、マップでは機能しないようですMyObject。
そうです、私はここの宇宙でちょっと迷っています。誰かがこれを達成する方法の手がかりを持っているなら、本当に非常に基本的なタスクです、私に知らせてください。
乾杯!