Actionscript 删除存储在多个ArrayCollection中的对象

Actionscript 删除存储在多个ArrayCollection中的对象,actionscript,arraycollection,Actionscript,Arraycollection,我有几个ArrayCollection(我事先不知道它们的编号),其中包含一个相同的对象(以及其他对象) 是否可以在第一个arraycollection中删除我的对象“obj”,并在所有其他arraycollection中自动删除它,而无需在每个arraycollection中逐个删除它?假设所有数组集合共享一个公共源,我将创建ListCollectionView而不是ArrayCollections,并使它们都指向单个ArrayCollection,即: var masterCollectio

我有几个ArrayCollection(我事先不知道它们的编号),其中包含一个相同的对象(以及其他对象)


是否可以在第一个arraycollection中删除我的对象“obj”,并在所有其他arraycollection中自动删除它,而无需在每个arraycollection中逐个删除它?

假设所有数组集合共享一个公共源,我将创建ListCollectionView而不是ArrayCollections,并使它们都指向单个ArrayCollection,即:

var masterCollection:ArrayCollection = new ArrayCollection();

for (var i:uint = 0; i < N; i++)
{
    slaveCollections[i] = new ListCollectionView(masterCollection);
}
var masterCollection:ArrayCollection=newarraycollection();
对于(变量i:uint=0;i

无论何时从任何slaveCollection中添加或删除项目,它都将从主集合中添加/删除,并且所有其他列表都将通过CollectionEvent更新。

假设所有阵列集合不共享公共源,我将向每个集合添加一个集合事件侦听器以处理您的需求:

for (var i:uint = 0; i < N; i++)
{
    slaveCollections[i] = new ArrayCollection();
    slaveCollections[i].addEventListener(CollectionEvent.COLLECTION_CHANGE, collectionListener);
}
这应该允许您对任何集合调用:collection.removietem(x),并从其他集合中删除该项

for (var i:uint = 0; i < N; i++)
{
    slaveCollections[i] = new ArrayCollection();
    slaveCollections[i].addEventListener(CollectionEvent.COLLECTION_CHANGE, collectionListener);
}
private function collectionListener(event:CollectionEvent):void
{

   if (event.kind != CollectionEventKind.REMOVE)
        return

   for each(var slaveCollection:ArrayCollection in slaveCollections)
   {
      for each(var item:Object in event.items)
      {
          var itemIndex:int = slaveCollection.getItemIndex(item);
          if (itemIndex >= 0)
          {
              slaveCollection.removeItemAt(itemIndex);
          }
      }
   }

}