Я создаю панель кнопок, заключенных в контейнер Canvas. Для этой цели я создал класс MyButton
, который является подклассом UIComponent. Класс MyButton имеет 2 других подкласса: MyRadioButton
и MyMenuButton
, которые имеют другое поведение для MouseEvent.MOUSE_DOWN
. MyMenuButton
создает и показывает меню, которое я строю из XML, и оно строится нормально.
Я добавляю слушателей в суперкласс следующим образом:
this.addEventListener(MouseEvent.CLICK, handleClick);
this.addEventListener(MouseEvent.MOUSE_DOWN, handleMouse);
this.addEventListener(MouseEvent.MOUSE_UP, handleMouse);
Это делается на этапе создания.
В своих подклассах я переопределяю обработчик handleMouse
.
override protected handleMouse(event:MouseEvent) : void
{
// subclass specific handling
}
Эти объекты кнопки добавляются в контейнер холста следующим образом:
в классе MyButtonsContainer.as
:
this.rowChildren.addChild(button);
Эти кнопки рисуются идеально и на своем месте. Проблема в поведении: событие не приходит в обработчик handleClick суперкласса. И вот собственно вопрос - почему так может быть? заранее спасибо
EDIT: похоже, что MOUSE_DOWN и MOUSE_UP мешают событию CLICK. Когда я удаляю их слушателей, я получаю обработчик кликов. Как заставить их жить вместе?