FlexMouseEvent.MOUSE_DOWN_OUTSIDE仅适用于弹出组件?

xwg*_*gou 2 apache-flex events mouseevent

我有一个扩展Flex的UIComponent的组件,我想添加一个FlexMouseEvent.MOUSE_DOWN_OUTSIDE监听器,但它不起作用.这意味着我无法捕获事件.但是,当我使用PopUpManager添加此组件,然后添加FlexMouseEvent.MOUSE_DOWN_OUTSIDE侦听器时,它工作正常.

FlexMouseEvent.MOUSE_DOWN_OUTSIDE仅适用于弹出组件吗?

谢谢你的帮助

Jon*_*wny 5

该事件仅通过弹出窗口触发.如果要检查鼠标事件,则需要将常规鼠标向下添加到父容器,并检查目标是否不是子容器.

另一种方法是通过在舞台上和组件上捕获事件...由于冒泡向上,因此首先捕获组件单击.

public var bCompClicked=false;

stage.addEventListener(MouseEvent.CLICK,onStageClick);
myComponent.addEventListener(MouseEvent.CLICK,onComponentClick);

private function onComponentClick(event:MouseEvent):void{
     bCompClicked = true;
}

private function onStageClick(event:MouseEvent):void{
     if(!bCompClicked){   //we didn't click the component, so we clicked outside it..
       clickedOutSide();
     }else{
        bCompClicked=false; //we did click the component, set to false for the next time.
     }
}

private function clickedOutSide():void{
    //do what you want when someone clicks outside...
}
Run Code Online (Sandbox Code Playgroud)

免责声明我没有测试过这个或者很难想到它......所以它可能不起作用.