如何将单击事件添加到Flex中的Axis标签

时间:2012-04-10 20:07:19

标签: flex

我有一个垂直轴的条形图

<mx:verticalAxis >
    <mx:CategoryAxis id="catAxis" title="Employee"  categoryField="id"/>
</mx:verticalAxis>

我希望纵轴上的标签可以点击。因此,当用户点击标签时,点击事件就会触发,我可以用它做点什么。我对点击栏本身并不感兴趣(我知道如何实现)

我尝试将一个事件监听器添加到Mouse.Click类型的CategoryAxis中,但没有任何东西被触发。

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

好的,我明白了。我将发布答案,以便具有类似要求的其他人可以受益。所以,Timofei Davydik帮助我朝着正确的方向前进。我创建了一个名为MyLabelRenderer的ActionScript类,它扩展了ChartLabel。在其构造函数中,我添加了所有事件侦听器,例如我需要的鼠标单击事件。

这是棘手的部分。感谢KB(朋友)提供正确的实例化。在我的图表所在的主应用程序中,我必须以这种方式实例化我的新类MyLabelRenderer的实例:

private var myLabelRenderer:ClassFactory = new ClassFactory(MyLabelRenderer);

然后您可以通过以下方式将其分配给AxisRenderer对象:

<mx:verticalAxisRenderers>
    <mx:AxisRenderer axis="{catAxis}" labelRenderer="{myLabelRenderer}"/>
</mx:verticalAxisRenderers>
祝你好运......

答案 1 :(得分:0)

我建议如下:

  1. 创建自定义轴渲染器(扩展AxisRenderer)并将其分配给您正在使用的verticalAxisRenderer样式属性。
  2. 创建自定义标签渲染器并将其指定给轴渲染器的Axis属性。您可以在其中添加单击侦听器。 注意:标签渲染器必须实现IDataRenderer和IFlexDisplayObject接口。