彻底隐藏Flex Chart中的Series

通常,如果Chart中已经有多个Series,我们一般不会直接删除Series,最好将它隐藏,再次需要时直接显示而不是重新请求数据添加。是不是将Series的visible属性设置成false就行了?并非如此,Series是可以隐藏但轴没有更新。

http://flexdevtips.blogspot.com/2009/10/linechart-with-checkbox-legend.html,这篇文章给出了一种解决方案,就是通过遍历每个Series的单个数据项目算出所有项目的最大值和最小值,再比较Series对象数组元素,算出当前的最大值和最小值,最后赋值给轴的maximum和minimum的属性。这种不法不错,但有执行效率的问题。还有就是如果不只一个轴需要更新,这种方法比较麻烦。下面提供一种更好的办法。

思路是这样的,隐藏Series时,从内存中删除图表数据的Series对象数组的某个Series,显示时,再根据其index加入到对象数组相应的位置。

点击此处查看该实例最终效果,点击此处下载该实例的源码。

说明:

1. Legend是用DataGroup自定义的,因为默认下,如果点击图例元素的标记和文本之间的间隙,是不能触发LegendMouseEvent事件的。

2. 删除显示代码都写在ItemRenderer中了,这样似乎简捷一点。不过最好通过在ItemRenderer中派发事件来解藕;

3. 删除Series对象数组时,index要重新计算一下,index等于当前Series在上一次操作后返回的对象数组(所有Series都可视)中的索引。

《彻底隐藏Flex Chart中的Series》有2个想法

发表评论