Используйте этап и прослушиватель щелчков спрайта (меню), при этом сначала выполняется прослушиватель спрайтов и примените метод stopPropagation () к обработчику щелчков спрайта.Например:
menu.addEventListener(MouseEvent.CLICK, handleMenuClick);
stage.addEventListener(MouseEvent.CLICK, handleStageClick);
private function handleMenuClick(e:MouseEvent):void{
// stop the event from propagating up to the stage
// so handleStageClick is never executed.
e.stopPropagation();
// note that stopPropagation() still allows the event
// to propagate to all children so if there are children
// within the menu overlay that need to respond to click
// events that still works.
}
private function handleStageClick(e:MouseEvent):void{
// put hide or destroy code here
}
Идея состоит в том, что щелчок мыши в любом месте создает одно событие MouseEvent.CLICK, которое всплывает со сцены, проходит через всех дочерних элементов к цели, а затем обратно через родительских элементов целиНа сцену.Здесь мы прерываем этот цикл, когда целью является наложение меню, не позволяя событию распространяться обратно до родительской стадии, гарантируя, что метод handleStageClick () никогда не вызывается.Хорошая вещь об этом подходе - то, что он является полностью общим.Под слоем наложения может быть много дочерних элементов, а наложение может иметь своих собственных дочерних элементов, которые могут реагировать на щелчки, и все это работает.