哪个事件触发了回调函数

时间:2012-10-10 23:27:16

标签: flex events actionscript

我有一个弹出窗口的FlexMouseEvent.MOUSE_DOWN_OUTSIDE事件与触发弹出窗口的LinkBut​​ton的click事件冲突。从本质上讲,我希望我的标签的click事件在每次单击时都像开关一样打开/关闭弹出窗口。可以关闭此弹出窗口的另一种方式是FlexMouseEvent.MOUSE_DOWN_OUTSIDE。

特别是当弹出触发LinkBut​​ton的FlexMouseEvent.MOUSE_DOWN_OUTSIDE时,两者发生冲突。

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

以下是一些可以咀嚼的代码:

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

1 个答案:

答案 0 :(得分: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将其与较大的图像关联。