点击活动外Flex中自定义组件(Click-outside event on custom comp

2019-09-19 11:40发布

有没有写一个自定义事件,当用户点击自定义组件实例之外的被触发的方法吗? 基本上,任何地方在主Flex应用程序。 谢谢。

Answer 1:

您可以使用FlexMouseEvent.MOUSE_DOWN_OUTSIDE事件。 例如:

myPopup.addEventListener(
   FlexMouseEvent.MOUSE_DOWN_OUTSIDE,
   function(mouseEvt:FlexMouseEvent):void
   {
       PopUpManager.removePopUp(myPopup);
   }
);


Answer 2:

stage.addEventListener( MouseEvent.CLICK, stgMouseListener, false, 0, true );

...

private function stgMouseListener( evt:MouseEvent ):void
{
    trace("click on stage");
}


private function yourComponentListener( evt:MouseEvent ):void
{
    trace("do your thing");
    evt.stopPropagation();
}


Answer 3:

从Senocular了这一点。 我认为它适用于这个问题,至少它的伎俩我。 什么jedierikb建议似乎是相同的,但有点不完整的。

防止事件传播

如果你想阻止事件的进一步传播,您可以使用stopPropagation()(flash.events.Event.stopPropagation())或stopImmediatePropagation()(flash.events.Event.stopImmediatePropagation(事件侦听器内,这样做停止))。 这些方法从传递到事件侦听器的事件对象调用,基本上阻止发生的事件 - 至少在过去的这一点。

stopPropagation防止超越目前任何对象从recieving该事件,并且这可以是该事件的任何阶段内。 stopImmediatePropagation不相同,但也需要防止当前目标的情况发生过接收事件中的其他事件的额外步骤。 那么,作为stopPropagation会阻止精灵A的母公司接收事件,stopImmediatePropagation将阻止精灵A的母公司,以及任何其他听众听雪碧一个接收事件。

例如:使用stopPropagation和stopImmediatePropagation ActionScript代码之间切换:

var circle:Sprite = new Sprite();
circle.graphics.beginFill(0x4080A0);
circle.graphics.drawCircle(50, 50, 25);
addChild(circle);

circle.addEventListener(MouseEvent.CLICK, clickCircle1);
circle.addEventListener(MouseEvent.CLICK, clickCircle2);
stage.addEventListener(MouseEvent.CLICK, clickStage);

function clickCircle1(evt:MouseEvent):void {
    evt.stopPropagation();
    // evt.stopImmediatePropagation();
    trace("clickCircle1");
}
function clickCircle2(evt:MouseEvent):void {
    trace("clickCircle2");
}
function clickStage(evt:MouseEvent):void {
    trace("clickStage");
}

单击圆,看到了事件是如何停止了与每个方法。 stopPropagation防止阶段从接收事件而stopImmediatePropagation也从识别事件防止clickCircle2

正常输出

clickCircle1
clickCircle2
clickStage

stopPropagation输出

clickCircle1
clickCircle2

stopImmediatePropagation输出

clickCircle1 


Answer 4:

的Flex / ActionScript 3的 - 在鼠标靠近popupanchor任何地方点击弹出锚外

4.6 SDK试试这个..

frmPUA.popUp.addEventListener(FlexMouseEvent.MOUSE_DOWN_OUTSIDE,menuPopOutside,假,0,TRUE);

完整代码在缴费

http://saravanakumargn.wordpress.com/2013/12/14/flexactionscript-3-close-popupanchor-on-mouse-clicked-anywhere-outside-popup-anchor-2/



文章来源: Click-outside event on custom components in flex