Руководство по actionscript. часть 3, стр. 150
SetWatchedRoot(target);
// Помечает, что объект watchedObject больше не находится // в списке отображения onStage = false;
// Сообщаем приемникам, что объект watchedObject был удален // из объекта Stage
dispatchEvent(new Event(StageDetector. REMOVED_FROM_STAGE));
}
}
}
// Возвращает корневой’ объект иерархии отображения, в настоящий момент // содержащий объект watchedObject
private function findWatchedObjectRoot ( );DisplayObject { var watchedObjectRoot:DisplayObject = watchedObject; while (watchedObjectRoot. parent!= null) { watchedObjectRoot = watchedObjectRoot. parent;
}
return watchedObjectRoot;
}
// Начинает отслеживание событий ADDED и REMOVED, получателем // которых является корневой объект иерархии отображения // объекта watchedObject
private function setWatchedRoot (newWatchedRoot.-DisplayObject) :void { clearWatchedRoot( ); watchedRoot = newWatchedRoot; regi sterLi steners(watchedRoot);
}
// Удаляет приемники событий из объекта watchedRoot и ссылку // на объект watchedRoot из данного объекта StageDetector private function clearWatchedRoot ( );void { if (watchedRoot!= null) {
unregi sterLi steners(watchedRoot);
watchedRoot = null;
}
}
// Регистрирует приемники событий ADDED и REMOVED в объекте watchedRoot private function regi sterLi steners (target; DisplayObject)-.void {
target. addEventLi stener(Event. ADDED, addedLi stener);
target. addEventLi stener(Event. REMOVED, removedLi stener);
// Отменяет регистрацию приемников событий ADDED и REMOVED // в объекте watchedRoot
private function unregisterListeners (target:DisplayObject):void { target. removeEventLi stener(Event. ADDED, addedLi stener); target. removeEventLi stener(Event. REMOVED, removedLi stener);
}
}
}
О том, как пользовательские события StageDetector. ADDED_TO_STAGE и Stage. REMOVED_FROM_STAGE применяются в классе CustomMousePointer, будет рассказано в гл. 22.