У меня есть TabNavigator, который я пытаюсь сделать как Firefox, поскольку последняя вкладка - специальная вкладка «+», которая добавляет новую вкладку в элемент управления. Для этого я добавляю обработчик событий к самой первой вкладке, которую я получаю с помощью tabNavigator.getTabAt(0).addEventListener(MouseEvent.CLICK, clickFunction, false, int.MAX_VALUE, false)
. Я установил приоритет int.MAX_VALUE
, поэтому мой метод должен быть первым, который называется, а затем может остановить других обработчиков, вызванных с помощью stopImmediatePropagation()
.Flex TabNavigator Tab Кнопки не срабатывают Нажмите Событие
Моя проблема заключается в том, что время от времени мой обработчик клика не вызывается, и вместо этого выполняется обычная логика, а вкладка «+» переключается на.
Код для 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);
}
}
Если он работает, как в Firefox, то вкладки будут добавлены к левой вкладке (перед) «+», который может приращения индекса этой вкладки в 'tabNavigator'. Итак, чтобы получить вкладку «+», вам придется использовать 'tabNavigator.getTabAt (1)'. Возможно ли, что это происходит? Если нет, можете ли вы опубликовать некоторый исходный код? – Travesty3
Мой код не должен иметь этой проблемы, хотя это идея, которую я имел. Проблема в том, что тогда это никогда не сработает, сейчас это несколько раз работает. Я опубликовал более полный код. – shmuelie
Как добавить вкладку «переключиться на» к вкладкам? Вместо того, чтобы полагаться на остановку события, возможно, просто не добавляйте этот прослушиватель событий на вкладку «+». – Travesty3