我希望能够访问动作中的各个图例项目(图例项目是标识图表系列的标签和彩色块)。有没有人知道Legend或Chart的属性可以访问Legend中当前显示的所有LegendItem?
我知道这可以通过使用LegendMouseEvents来实现,因为事件可以访问已被点击/滚动的LegendItem。但是,在这种情况下我不能依赖事件。
我的最后一招是破解一个自定义传奇,但这需要时间(我并不特别喜欢)所以我只是想我会首先吸引SO社区!
谢谢你们
答案 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)"/>