наиболее рациональный способ перетащить всплывающее меню в flex - PullRequest
0 голосов
/ 27 июля 2010

В моем приложении в настоящее время есть всплывающее меню, реализованное в виде BorderContainer с множеством кнопок, текстовых полей, средств выбора даты и т. Д. PopUpManager обрабатывает его появление и исчезновение на основе некоторых событий пользовательского интерфейса.

Я быхотелось бы иметь возможность перетаскивать контейнер, нажав на любую его часть минус все компоненты на нем.Другими словами, когда я нажимаю на кнопки, текстовые поля и т. Д., Я бы хотел, чтобы они отвечали как обычно, а контейнер не перетаскивался.

Я пробовал эту очень простую реализацию

_menu.addEventListener(MouseEvent.ROLL_OVER, toggleDragON);
_menu.addEventListener(MouseEvent.ROLL_OUT, toggleDragOFF);

private function mouseDown(event:MouseEvent):void 
{ 
    _menu.startDrag(); 
} 

private function mouseReleased(event:MouseEvent):void 
{ 
    _menu.stopDrag(); 
}

но это определенно не помогает, т. Е. Все компоненты ведут к перетаскиванию.Я пытался убедиться, что mouseEnabled и mouseChildren верны для всех компонентов, но это, кажется, не имеет никакого значения.

Затем я наткнулся на этот поток , который делает многов смысле, но мне трудно поверить, что лучший способ справиться с этим - обработать все события щелчка для каждого из компонентов всплывающего окна.Есть ли очевидный простой способ сделать это, чего мне не хватает?

спасибо!

f

1 Ответ

2 голосов
/ 27 июля 2010

Как насчет проверки целевого свойства события, чтобы проверить, соответствует ли оно вашему меню?

if (event.target == _menu) {
    _menu.startDrag();
}
...