0

我有一个 FlexMouseEvent.MOUSE_DOWN_OUTSIDE 事件,用于与触发弹出窗口的 LinkBut​​ton 的单击事件相冲突的弹出窗口。本质上,我希望我的标签的单击事件在每次单击时像开关一样打开/关闭弹出窗口。关闭此弹出窗口的另一种方法是通过 FlexMouseEvent.MOUSE_DOWN_OUTSIDE。

这两个冲突特别是当 FlexMouseEvent.MOUSE_DOWN_OUTSIDE 在弹出触发链接按钮上单击时。

我在想的是,如果在 LinkBut​​ton/ 上单击该事件,我将停止传播该事件,但我该怎么做。本质上,如何在我的回调函数中检查实际触发的事件(元素有多个事件侦听器,因此它不是故障安全的)

这里有一些代码可以细细琢磨:

element.addEventListener(FlexMouseEvent.MOUSE_DOWN_OUTSIDE, callBackFunction, false, 0, true);  
element.addEventListener(AnotherEvent, callBackFunction, false, 0, true);
4

1 回答 1

0

这很简单。每个事件都有一个 currentTarget 属性,它是触发该事件的对象。您可以使用 e.currentTarget 来确定用户单击了哪个对象。

private function mouseDownOutside(e:FlexEvent = null):void{
    if ( e.currentTarget == obj ) {
         //do something
    }
}

如果您需要它更通用或对象超出范围,您还可以进行简单的“是”检查。

if ( e.currentTarget is DataType ) {
    //do something
}

当您在循环中创建大量对象时,这也很有帮助。一旦你离开循环,它们就会超出范围,所以你不能在之后真正调用它们。因此,假设您创建了一个包含 50 个缩略图的画廊,并且您想要加载用户单击的缩略图的全屏版本。在您的实例化循环中,您将name拇指的属性设置为循环中的迭代(通常是 var i),然后您可以使用(e.currentTarget as DisplayObject).name它与更大的图像相关联。

于 2012-10-11T00:29:14.223 回答