2012-04-10 55 views
1

点击事件添加到轴标签我有这样如何在Flex中

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

我会为纵轴上的标签可以点击条形图与垂直轴。所以当用户点击一个标签时点击事件就会触发,我可以用它做点什么。我没有兴趣点击栏本身(我知道如何做到这一点)

我试着添加一个事件监听器到类型为Mouse.Click的CategoryAxis,但没有人被激发。

任何帮助表示赞赏。

回答

1

好吧,我把它工作。我会公布答案,以便其他有相似要求的人可以受益。所以,Timofei Davydik帮助我找到了正确的方向。我创建了一个名为MyLabelRenderer的ActionScript类,它扩展了ChartLabel。在其构造函数中,我添加了所有事件侦听器,例如我需要的鼠标单击事件。

这是棘手的部分。谢谢KB(朋友)提供正确的实例。在主要应用在我的图是我必须初始化我的新类MyLabelRenderer的一个实例是这样的:

<mx:verticalAxisRenderers> 
    <mx:AxisRenderer axis="{catAxis}" labelRenderer="{myLabelRenderer}"/> 
</mx:verticalAxisRenderers> 

好运:

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

然后你就可以用这种方式把它分配给AxisRenderer将对象...

+0

注意:你也应该能够做到这一点,无需创建一个变量,并使用大括号绑定表达式,通过使用一个字符串指定'labelRenderer',该字符串是您的类的完全限定包名称。我通常会这样做''Lists',它是'itemRenderer'属性,它也期望'ClassFactory'。我想知道为什么这会起作用...... ClassFactory的文档解释如下:“MXML让你使用下面的语法:MXML允许你使用下面的语法:MXML: 2012-04-13 06:30:09

0

我建议如下:

  1. 创建自定义轴渲染(延伸AxisRenderer),并将其分配给您正在使用的AxisverticalAxisRenderer样式属性。
  2. 创建自定义标签渲染器并将其分配给轴渲染器的labelRenderer属性。您可以在其中添加点击侦听器。 注意:标签渲染器必须实现IDataRenderer和IFlexDisplayObject接口。
+0

@Timofie谢谢你的建议,但我不太清楚我理解你的方法。你能否提供一些更详细的信息? – Alaa 2012-04-11 14:46:04