1

グラフの各バーにスライダーのセットがあります。すべてのスライダーを対応するバーにバインドしました。スライダーの値を変更すると、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>

4

1 に答える 1

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

于 2011-05-24T14:14:57.530 に答える