0


0

flexでポップアップメニューをドラッグする最も合理的な方法

私のアプリでは、現在、多くのボタン、テキストフィールド、日付ピッカーなどを備えたBorderContainerとして実装されたポップアップメニューがあります。 PopUpManagerは、いくつかのUIイベントに基づいて表示と非表示を処理します。

コンテナの任意の部分をクリックして、コンテナ上のすべてのコンポーネントを「マイナス」*してドラッグできるようにしたいと思います。 つまり、ボタン、テキストフィールドなどをクリックすると 私は彼らがいつものように反応し、コンテナがドラッグできないようにしたいのです。

この非常に簡単な実装を試しました

_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がすべてのコンポーネントに対してtrueであることを確認しようとしましたが、これは何の違いももたらさないようです。

その後、https://stackoverflow.com/questions/1430227/mousedown-mousemove-click-issues-with-flex-drag-and-drop [このスレッド]に遭遇しましたが、これはかなり理にかなっていますが、私は苦労していますこれを処理する最善の方法は、ポップアップの各コンポーネントのすべてのクリックイベントを処理することであると信じています。 私が見逃しているこれを行う簡単な方法はありますか?

ありがとうございました!

f

1 Answer


2


イベントのターゲットプロパティをチェックして、それがメニューに等しいかどうかをチェックしてみませんか?

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