Flex Chart Legend - 如何获得细粒度的程序控制?

时间:2010-09-16 09:29:22

标签: flex charts legend

我希望能够访问动作中的各个图例项目(图例项目是标识图表系列的标签和彩色块)。有没有人知道Legend或Chart的属性可以访问Legend中当前显示的所有LegendItem?

我知道这可以通过使用LegendMouseEvents来实现,因为事件可以访问已被点击/滚动的LegendItem。但是,在这种情况下我不能依赖事件。

我的最后一招是破解一个自定义传奇,但这需要时间(我并不特别喜欢)所以我只是想我会首先吸引SO社区!

谢谢你们

2 个答案:

答案 0 :(得分:1)

图例是一个容器,因此您应该能够执行以下代码所示:

  

var currentLegendItem:LegendItem;

     

for(var i:int = 0; i<   legend.numChildren;我++){
      currentLegendItem = LegendItem(legend.getChildAt(i));
  }

答案 1 :(得分:1)

我尝试了Double提出的解决方案,但由于某种原因,它没有用(虽然它确实应该有)。我将不得不看到试图让它以后工作。我想我会发布这个替代解决方案,以防其他人遇到同样的麻烦。

我设法找到另一个解决方案(虽然我不确定它是否会对他们的情况有所帮助)。我只需要在创建时影响我的legendItems,所以对legend的childAdd事件执行了一个动作,然后对legendItem做了我需要做的事情。

private function legendItemAdded(event:ChildExistenceChangedEvent):void {
   var legendItem:LegendItem = event.relatedObject as LegendItem;

   // do what you want with it
}

.........

<mx:Legend id="myLegend"
dataProvider="{myDP}"
borderStyle="solid"
stroke=""
borderThickness="0"
top="0" bottom="20"
childAdd="legendItemAdded(event)"/>