在flex中使用滑块事件动态更改Fusion图表值

时间:2010-06-04 07:09:23

标签: flex events dynamic slider fusioncharts

我在图表中为每个条形图设置了一组滑块。我已将所有滑块绑定到相应的条形图上。当我更改滑块的值时,ArrayCollection中的值会发生变化,我也使用了

  

singleData.refresh();

但图表中的值保持不变。如何使用滑块值的更改来更新图表中的值。

这是我的代码:

<mx:Script>
    <![CDATA[
        import mx.events.SliderEvent;
        import mx.collections.ArrayCollection;

        [Bindable]
        private var singleData:ArrayCollection=new ArrayCollection([
               {label:'Diego', value:'22'},
               {label:'Steve', value:'20'},
        ]);

        private function updateChart(event:SliderEvent, index:Number):void{
            singleData.getItemAt(index).value = String(event.value);
            singleData.refresh();
        } 
    ]]>
</mx:Script>


<ns1:FusionCharts x="10" y="10" FCChartType="Column3D" width="500">  
    <ns1:FCChartData  FCParams="{chartParam}" FCData="{singleData}" />
</ns1:FusionCharts>

<mx:VBox x="10" y="318">
    <mx:HBox>
        <mx:Label text="Diego:" width="100"/>
        <mx:HSlider id="SliderDiego" change="{updateChart(event,0)}" liveDragging="true" value="{singleData.getItemAt(0).value}" minimum="0" maximum="100" width="120"/>                    
    </mx:HBox>
    <mx:HBox>
        <mx:Label text="Steve:" width="100"/>
        <mx:HSlider id="SliderSteve" change="{updateChart(event,1)}" liveDragging="true" value="{singleData.getItemAt(1).value}" minimum="0" maximum="100" width="120"/>                    
    </mx:HBox>
</mx:VBox>

1 个答案:

答案 0 :(得分:1)

图表在渲染后不会保留绑定。在更新图表功能中,再次设置新数据并渲染图表。在此之前还要为图表设置一个id。

<ns1:FusionCharts id="FC1" x="10" y="10" FCChartType="Column3D" width="500">  

现在在脚本中执行此操作:

private function updateChart(event:SliderEvent, index:Number):void{
        singleData.getItemAt(index).value = String(event.value);
        singleData.refresh();
        FC1.FCData(singleData);
        FC1.FCParams(chartparam);
        FC1.FCRender(); 
} 

参考:http://www.fusioncharts.com/flex/docs/charts/Contents/case_changeData.html