Руководство по actionscript. часть 3, стр. 142
If (DisplayObject(e. target. parent) == e. currentTarget) {
traceCA direct child was added»); } else {
trace(«A descendant was added»);
}
}
Продолжая работать с нашим примером, снова сделаем объект container ребенком, добавив его (и соответственно два его потомка) в экземпляр класса Stage:
stage. addChild(container);
При выполнении предыдущего кода среда Flash снова осуществляет диспетчеризацию события Event. ADDED, получателем которого является объект container. И снова вызывается метод addedListener ( ) — на этот раз на фазе получения, а не на фазе всплытия.
Когда событие Event. ADDED вызывает приемник события на фазе получения, мы знаем, что объект, в котором зарегистрирован приемник, был добавлен в родительский контейнер.
Чтобы различать ситуации, когда объект container приобретает нового потомка и когда сам объект container добавляется в родительский контейнер, мы проверяем текущую фазу события, как показано в следующем коде:
private function addedListener (e:Event):void { // Если этот приемник был вызван на фазе захвата или всплытия… if (е. eventPhase!= EventPhase. AT_TARGET) {
// …контейнер получил нового потомка
traceC’new descendant: » + е. target); } else {
// …в противном случае контейнер был добавлен к новому родителю traceC’new parent: » + DisplayObject(е. target).parent);
Теперь перейдем к событию Event. REMOVED. Оно работает аналогично событию Event. ADDED, но его диспетчеризация выполняется при удалении объектов, а не при их добавлении.