Руководство по actionscript. часть 3, стр. 143
Следующий код регистрирует приемник события Event. REMOVED с именем removedListener ( ) в объекте container для события Event. REMOVED:
contaiпег. addEventListener(Event. REMOVED, removedListener);
Теперь удалим потомка из объекта container:
chi1d. removeChi1d(grandchiId)
При выполнении предыдущего кода среда Flash осуществляет диспетчеризацию события Event. REMOVED, получателем которого является объект grandchild, и метод removedListener ( ) вызывается на фазе всплытия.
Далее следующий код удаляет сам объект container из экземпляра класса
Stage:
stage. removeChild(contaiпег)
При выполнении приведенного кода среда Flash осуществляет диспетчеризацию события Event. REMOVED, получателем которого является объект container, и метод removedListener ( ) вызывается на фазе получения.
Как и в случае с методом addedListener ( ), в методе removedListener ( ) мы можем различать ситуации, когда объект container теряет потомка и когда сам объект container удаляется из своего родительского контейнера, проверяя текущую фазу события, как показано в следующем коде:
private function removedListener (e:Event):void { // Если этот приемник был вызван на фазе захвата или на фазе всплытия… if (е. eventPhase!= EventPhase. ATJARGET) { // …из контейнера удаляется потомок
traceCa descendant was removed from container: » + e. target); } else {
// …в противном случае контейнер удаляется из своего родителя trace(«contaiпег is about to be removed from its parent: » + DisplayObject(e. target).parent);
}
}
В листинге 20.6 представлены предыдущие примеры кода для событий Event. ADDED и Event. REMOVED в контексте тестового класса ContainmentEventDemo. Мы рассмотрим реальные примеры использования событий контейнеров в двух следующих разделах.