Руководство по actionscript. часть 3, стр. 145
В листинге 20.7 представлен код класса IconPanel, который намеренно был упрощен, чтобы продемонстрировать использование событий Event. ADDED и Event. REMOVED. Обратите внимание, что приемники событий Event. ADDED и Event. REMOVED выполняют код по размещению значков только в том случае, когда объект IconPanel приобретает нового или теряет существующего непосредственного ребенка. Код по размещению значков не выполняется в следующих ситуациях:
? когда объект IconPanel приобретает или теряет потомка, который не является непосредственным ребенком;
? если сам объект IconPanel добавляется в родительский контейнер.
Листинг 20.7. Размещение значков в классе IconPanel
package { import flash. display.*; import flash. events.*;
public class IconPanel extends Sprite { public function IconPanel ( ) { addEventLi stener(Event. ADDED. addedListener); addEventLi stener(Event. REMOVED. removedLi stener);
}
public function updateLayout ( ):void { // Выполняет алгоритм размещения значков (код не приводится)
}
// Обрабатывает события Event. ADDED private function addedListener (e:Event):void { if (DisplayObject(e. target. parent) == e. currentTarget) {
updateLayout( );
// Обрабатывает события Event. REMOVED private function removedListener (e:Event):void { if (DisplayObject(e. target. parent) == e. currentTarget) updateLayout( );
}
}
События ADDED TO STAGE и REMOVED J=ROM_STAGE
Как мы уже знаем из двух приведенных выше разделов, события Event. ADDED и Event. REMOVED возникают, когда экземпляр класса DisplayObject добавляется в экземпляр класса DisplayObjectContainer или удаляется из него. Однако по событиям Event. ADDED и Event. REMOVED нельзя определить, находится данный объект в настоящий момент в списке отображения или нет. Чтобы определить, когда экземпляр класса DisplayObject добавляется в список отображения или удаляется из него, используются события Event. ADDED_TO_STAGE и Event. REMOVED FROM STAGE, которые были добавлены в API отображения, начиная с приложения Flash Player 9.0.28.0.