Цитата:
|
Честно говоря, я так и считал. Странное если это не так.
|
Было бы очень странно, если бы было наоборот. Вы представляете контейнер как поднос.
Цитата:
|
Ведь GUIMenuButton лежит в GUIMainMenu и перекрывает его.
|
Так "в" или "перекрывает"? Контейнер это не "тарелка", это "банка". Чтобы надавить на содержимое банки, Вам надо надавить на банку.
Как иначе-то? Совершенно естественное поведение. Кнопка находится внутри меню. Курсор над кнопкой значит что прежде всего он над меню, а потом уже над кнопкой. То есть между курсором и кнопкой "пакетик" меню, в котором лежит эта кнопка. И сначала Вы давите на "пакет", а потом уже "давление" достигает кнопки. Это фаза захвата – когда событие опускается от самого верхнего уровня до самого глубокого объекта под мышью (из списка чувствительных к мыши, естественно). Этот последний, самый глубокий объект, называется target. От него начинается фаза Всплытия (если распространение события не остановлено в обработчике, например методом Event#stopPropagation() ). Поскольку, нажимая на этот объект, Вы естественно нажали на все пакетики, в которые он упакован, каждый из его контейнеров до stage включительно пошлет событие "от себя". Раз Вы на него подписались, то естественно получите. Вы же нажали на Меню, как оно может не посылать событие?
Одно из простых "механических" решений состоит в том, что Меню ловит клик не по "всему себе", а только по фоновому для кнопок элементу. То есть фон как бы "кнопка" самого меню, а кнопки меню перекрывают его. Иначе делайте программно, либо с фазами, либо с остановкой распространения.