我有一个弹出窗口的FlexMouseEvent.MOUSE_DOWN_OUTSIDE事件与触发弹出窗口的LinkButton的click事件冲突。从本质上讲,我希望我的标签的click事件在每次单击时都像开关一样打开/关闭弹出窗口。可以关闭此弹出窗口的另一种方式是FlexMouseEvent.MOUSE_DOWN_OUTSIDE。
特别是当弹出触发LinkButton的FlexMouseEvent.MOUSE_DOWN_OUTSIDE时,两者发生冲突。
我在想的是,如果在LinkButton上点击该事件,我将停止传播该事件但是我该怎么做呢。本质上,在我的回调函数中如何检查实际触发此事件的事件(该元素有多个事件侦听器,因此它不是故障安全的)
以下是一些可以咀嚼的代码:
element.addEventListener(FlexMouseEvent.MOUSE_DOWN_OUTSIDE, callBackFunction, false, 0, true);
element.addEventListener(AnotherEvent, callBackFunction, false, 0, true);
答案 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
将其与较大的图像关联。