2012-04-26 4 views
0

Панель инструментов Hallo поддерживает событие click click. Однако искра tabBar не поддерживает событие itemClick.itemclick событие в искровой панели?

есть способ слушать itemclick события в СПАРКЕ TabBar

благодарит всех

+0

Nope. Используйте [IndexChangeEvent] (http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/spark/events/IndexChangeEvent.html) – RIAstar

+0

Spark tabar doesnot поддерживает indexChangeEvent – flex

+0

Да, это делает: это 'change' в Обозначение MXML на самом деле является «IndexChangeEvent.CHANGE». – RIAstar

ответ

1

искровых компонент унаследовавших от ListBase больше не диспетчерской ItemClick события. Однако вы можете использовать событие IndexChangeEvent. Он имеет свойство newIndex, которое сообщает вам, что является выбранным элементом (или вкладкой в ​​данном конкретном случае).

<s:TabBar dataProvider="{dp}" change="trace('selected: ' + event.newIndex)" /> 

Одна большая разница со старым ItemClick в том, что это событие только отправляется, когда выбранный элемент фактически изменяется (в отличие от, когда она нажата). Если вы действительно хотите, чтобы поведение ItemClick было назад, вы можете создать пользовательский ItemRenderer, который отправляет событие Item12ick .


Если вы хотите отреагировать на каждый клик, есть несколько подходов. Вот два из них:

1. Создайте пользовательский ItemRenderer, который отправляет событие ItemClick.

.

public class TabBarButton extends ButtonBarButton { 

    override public function initialize():void { 
     super.initialize(); 
     addEventListener(MouseEvent.CLICK, fireItemClick); 
    } 

    private function fireItemClick(event:MouseEvent):void { 
     owner.dispatchEvent(new ItemClickEvent(
      ItemClickEvent.ITEM_CLICK, false, false, null, itemIndex, null, data 
     )) 
    } 

} 

Теперь вы можете использовать его как это:

<s:TabBar id="tabBar" dataProvider="{dp}" 
      itemRenderer="net.riastar.TabBarButton" /> 

tabBar.addEventListener(ItemClickEvent.ITEM_CLICK, onItemClick); 

2./Другой подход был бы просто слушать для любого события щелчка на TabBar и использовать event.target найти вкладку щелкнул:

<s:TabBar dataProvider="{dp}" click="trace(event.target)" /> 
//traces tabBar.TabBarSkin1.dataGroup.TabBarButton1 

Обратите внимание, что это прямой ответ на ваш вопрос, но я на самом деле не думаю, что вы должны это делать. В большинстве случаев IndexChangeEvent.CHANGE будет отлично.

+0

Спасибо, я пытаюсь отправить событие, когда пользователь нажимает на табуляцию. Событие изменения не будет поддерживать такое поведение. Не могли бы вы дать более подробную информацию о том, как itemrender помогает добавить событие itemclik – flex

Смежные вопросы