Не знаю, как вы поступите, но в приведенном ниже примере я обязательно удалил прослушиватель событий у самого глубокого потомка, прежде чем добавить его к следующему.
Конечно, вы можете добавить метод stopImmediatePropagation (), как упомянуто в других ответах, чтобы убедиться, что событие не всплывает на другие объекты. Я не уверен, что пузыри событий повлияют на оставшихся потомков в этом примере, но если это произойдет, это определенно ответит на проблему, и вы можете вызвать этот метод в функции eventHandler где угодно, прежде чем вызывать initEvent (). 1003 *
private function initEvent(child:Sprite):void
{
child.addEventListener( KeyboardEvent.KEY_UP , eventHandler );
}
private function eventHandler(event:KeyboardEvent):void
{
if( event.charCode == //whatever the charCode is for the escape key )
{
var deepestChild:Sprite = event.currentTarget;
deepestChild.removeEventListener( KeyboardEvent.KEY_UP , eventHandler );
var parent:Sprite = deepestChild.parent;
parent.removeChild(deepestChild );
if( parent != null )
initEvent( parent )
}
}