3

アイテムを追加および削除できる間、FlexでArrayCollectionを反復処理したいと思います。

Javaのような「クラシック」イテレータを使用する方法が見つからなかったので、それでうまくいきます。カーソルを試してみました。しかし、それは私が望むようには実際には機能しません;)では、どうすればうまくいくのでしょうか?


    var cursor:IViewCursor = workingStack.createCursor();

    while (!cursor.afterLast)
    {
        // Search
                    deepFirstSearchModified(cursor.current.node,nodeB,cursor.current.way);
        // Delete Node
        cursor.remove();
        // Next Node
        cursor.moveNext();

    }
4

5 に答える 5

3

操作には New Collection/Array を使用する方が良いと思います

private function parseSelectedItem(value:IListViewCollection):IListViewCollection{
 var result:Array = new Array();
    for each(var item:Object in value)
    {
        //result.push();
        //result.pop();
    }
    return new ArrayCollection(result) ;
}

役立つことを願っています

于 2011-05-24T09:04:08.127 に答える
2

以下を使用してみてください。

for (var i:int = myArrayCollection.length - 1; i >= 0; i--) {
   myArrayCollection.removeItemAt(i);
}
于 2011-05-24T11:41:51.317 に答える
1

あなたの問題に対する解決策があります:

http://www.ericfeminella.com/blog/actionscript-3-apis/

CollectionIteratorクラスをご覧ください。

乾杯

于 2011-05-24T08:54:33.103 に答える
0

ActionLinqを見てください。を含む .Net Linq2Objects パターンを実装しIEnumerableます。もちろん、繰り返し処理しているアイテムを変更しているため、注意が必要です...

var workingStack:ArrayCollection = getData();
var iterator:IEnumerable = Enumerable.from(workingStack);

for each(var item:String in iterator) {
  doSomethingTo(workingStack);
}
于 2011-05-24T09:27:13.243 に答える
-1

フレックス (またはアクション スクリプト) では、行った変更はすぐに表示されます。したがって、 for で必要なことを実行できます。

    for (var i : Number = myArrayCollection.length; i > 0; i--) {
       myArrayCollection.removeItemAt(i - 1);
    }

私はそれがうまくいくはずだと思います。

于 2011-05-24T08:41:28.097 に答える