Не вижу смысла отягощать дополнительными функциями класс, заморачиваться на слушание событий типа ADDED_TO_STAGE / REMOVED_FROM_STAGE. Хранить это все еще где-то. Когда задача поставлена предельно просто и ясно: перебрать все объекты на сцене определенного класса. Зачем вот надо придумывать лишнее, когда конкретно в данном случае можно обойтись одной-единственной функцией. А для гибкости, можно класс динамически подсовывать:
Код AS3:
function getChildrenOfClass( container:DisplayObjectContainer, classToMatch:Class ):Array
{
if( !container || !classToMatch )
return null;
var outInstances:Array = [];
var d:DisplayObject;
var i:int = container.numChildren;
while( i-- )
{
d = container.getChildAt( i );
if( d is classToMatch )
outInstances.push( d );
}
return outInstances;
}
Пример юзания:
Код AS3:
var shapes:Array/**Shape*/ = getChildrenOfClass( root as DisplayObjectContainer, Shape );
(Код не компилил, мог пропустить какую-нибудь мелкую ошибку).
Автор не ставил задачу "максимально быстро", где возможно было бы оправдано пихать лишний функционал в кастомные классы.
Приведенный пример максимально гибок / абстрактен и может быть использован независимо от реализации кастомных классов.
|