我正在使用flex SuperTabNavigator
并希望关闭标签检查是否按下了控制按钮。我试过了:
public static var CONTROL_PRESSED:Boolean = false;
public function init():void {
var clickListener:Function = function _clickListener(event:MouseEvent):void{
trace(event.ctrlKey);
if(event.ctrlKey){
CONTROL_PRESSED = true;
}else{
CONTROL_PRESSED = false;
}
};
FlexGlobals.topLevelApplication.addEventListener(MouseEvent.CLICK, clickListener);
}
问题在于鼠标单击在应用程序中的任何位置都被调用,但选项卡上的除外。我也尝试使用相同的代码,addEventListener(MouseEvent.CLICK, clickListener);
将监听器添加到SuperTabNavigator
,但它根本不起作用。是否有其他方法可以捕获鼠标?
答案 0 :(得分:0)
这是因为SuperTabNavigator
有一个隐藏MouseEvent
的私有鼠标点击处理函数:
private function closeClickHandler(event:MouseEvent):void {
if(this.enabled) {
dispatchEvent(new Event(CLOSE_TAB_EVENT));
}
event.stopImmediatePropagation();
event.stopPropagation();
}
您需要修改SuperTab
来源中的SuperTabNavigator
课程,以便为某些CustomEvent
分发您想要的数据,而不是普通的new Event(CLOSE_TAB_EVENT)
。< / p>
然后更改onCloseTabClicked
中的SuperTabBar
功能,了解您的CustomEvent
。然后,您可以将其传递给您的应用程序代码(可能将其添加到SuperTabEvent
)。