我有一个 TabNavigator,我正在尝试像 Firefox 一样工作,因为最后一个选项卡是一个特殊的“+”选项卡,它向控件添加了一个新选项卡。为此,我将一个事件处理程序添加到我使用的第一个选项卡按钮tabNavigator.getTabAt(0).addEventListener(MouseEvent.CLICK, clickFunction, false, int.MAX_VALUE, false)
。我将优先级设置为,int.MAX_VALUE
所以我的方法应该是第一个调用的方法,然后可以阻止其他处理程序使用stopImmediatePropagation()
.
我的问题是我的点击处理程序不时被调用,而是正常逻辑运行并且“+”选项卡被切换到。
CustomTab 的代码(我删除了很多专有代码):
private var addTab:Function = null;
private var tabCreationAllowed:Boolean = true;
private function onCreationCompleted():void {
var tabButton:Button = getTab(0);
Container(getChildAt(0)).setStyle("closable", false);
tabButton.addEventListener(MouseEvent.CLICK, clickFunction, false, int.MAX_VALUE, false);
tabButton.addEventListener(MouseEvent.DOUBLE_CLICK, function(event:MouseEvent):void {event.stopImmediatePropagation(); }, false, int.MAX_VALUE, false);
}
private function clickFunction(event:MouseEvent):void {
event.stopImmediatePropagation();
if (this.tabCreationAllowed && (this.addTab != null) && (event.eventPhase == EventPhase.AT_TARGET)) {
this.tabCreationAllowed = false;
this.addTab();
var $this:CustomTab = this;
setTimeout(function ():void {
$this.tabCreationAllowed = true;
}, 1500);
}
}