【问题标题】:itemclick event in spark tabbar?火花标签栏中的itemclick事件?
【发布时间】:2012-04-26 14:51:43
【问题描述】:

你好标签栏支持项目点击事件。但是 spark tabBar 不支持 itemClick 事件。

有没有办法在 SPARK TABBAR 中监听 itemclick 事件

谢谢大家

【问题讨论】:

  • 不。使用IndexChangeEvent
  • Spark tabar 不支持 indexChangeEvent
  • 是的:MXML 表示法中的change 实际上是IndexChangeEvent.CHANGE
  • 好吧,它不会在您每次单击选定的标签栏时发送!对。
  • 没错。我已经更新了我的答案来解决这个问题。

标签: actionscript-3 apache-flex flex4 flex4.5


【解决方案1】:

从 ListBase 继承的 Spark 组件不再调度 ItemClick 事件。不过,您可以改用 IndexChangeEvent 事件。它有一个属性newIndex,它告诉您哪个是新选择的项目(或在这种特殊情况下的选项卡)。

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

与旧的 ItemClick 的一个重大区别是,该事件仅在所选项目实际更改时(而不是在单击它时)才调度。如果你真的想要返回 ItemClick 的行为,你可以创建一个自定义 ItemRenderer 来调度一个 ItemClick 事件。


如果您想对每次点击做出反应,有几种方法。以下是其中两个:

1./ 创建一个调度 ItemClick 事件的自定义 ItemRenderer。

.

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 就可以了。

【讨论】:

  • 谢谢,我正在尝试调度事件,每当用户点击标签栏时。更改事件将不支持这种行为。您能否提供更多详细信息 itemrender 如何帮助添加 itemclik 事件
猜你喜欢
  • 2011-12-26
  • 1970-01-01
  • 2011-04-11
  • 1970-01-01
  • 2014-01-29
  • 1970-01-01
  • 2011-10-23
  • 2015-05-14
  • 1970-01-01
相关资源
最近更新 更多