如何加速Flex中的图表渲染?

时间:2009-07-10 18:49:42

标签: flex

我正在使用lineseries图表,但是当我添加一个新点时,当总点数为〜1200点时,重新渲染的速度相当慢。当然,这是在相当慢的PC(~600 MHz)上运行。阅读有关如何加快渲染(关闭阴影,关闭filterData等等)的Flex文档似乎没有帮助。我将我的图表绑定到一个ArrayCollection(而不是我手动更新之前使用的数组),它似乎没有更快。 Adobe的文档似乎让我相信Chart只关注自上次更新以来发生的变化,但我只是添加了一点!如果他们的信息是正确的,为什么当我有~1200点然后当我只有2点(瞬时)时,更新一点需要更长的时间(5秒)?

仅供参考 - 当我向ArrayCollection添加新点时,我必须执行“AC.refresh()”以使DataBinding获取新数据。关于如何加快这个过程的任何想法?

2 个答案:

答案 0 :(得分:1)

任何在flash / flex中有1200点的绘图在重绘时都会变慢。当您添加额外的点时,您将使整个系列无效。一旦图表失效,它将在下一个可用的机会重绘自己。这种重绘会很慢。我不敢这样做。

我的观点是,为什么你需要在任何时候在图表上显示1200点。任何获得此图表的人都无法接收所有这些信息。如果您需要显示这些点的趋势,那么您需要更改设计以便显示平均值(根据Chris的评论)。您还可以使用其他策略。如果您查看Fiat Eco Drive应用程序,我们选择仅在任何时间显示最大范围。因此,即使我们可以有数百或数千个点,我们只显示一定数量的点。

有很多其他策略可以解决这个问题,你真的需要再看看图表设计,然后重构实际的图表构造。

答案 1 :(得分:0)

图表的几乎渲染时间来自渲染系列,因此如果您只是更改dataProvider并保留系列数,则图表将从第二次渲染得非常好。