Вы можете хранить список всех MC определенного типа, расширяя класс контейнера и переопределяя его функции addChild()
, addChildAt()
, removeChild()
и removeChildAt()
.
public class MySprite extends Sprite {
public var ownClasses:Vector.<MyOwnClass> = new Vector.<MyOwnClass>();
override public function addChild(child:DisplayObject):DisplayObject {
addOwnClass(child as MyOwnClass);
return super.addChild(child);
}
override public function addChildAt(child:DisplayObject, index:int):DisplayObject {
addOwnClass(child as MyOwnClass);
return super.addChildAt(child, index);
}
private function addOwnClass(child:MyOwnClass):void {
if (child) ownClasses.push(child);
}
override public function removeChild(child:DisplayObject):DisplayObject {
removeOwnClass(child as MyOwnClass);
return super.removeChild(child);
}
override public function removeChildAt(index:int):DisplayObject {
removeOwnClass(getChildAt(index) as MyOwnClass);
return super.removeChildAt(index);
}
private function removeOwnClass(child:MyOwnClass):void {
if (child) {
var i:int = ownClasses.indexOf(child);
if (i != -1) ownClasses.splice(i, 1);
}
}
}
Используя этот класс, каждый раз, когда добавляется дочерний элемент, вы проверяете, является ли он MyOwnClass
, и если это так, добавляете его в список ownClasses
.Аналогично удалению дочерних элементов.
Теперь вы можете просто получить доступ к списку, когда он вам нужен, без циклического перебора MC.