Having some troubles dynamically adding a line to a line chart.  The
code below adds a line when you click a button but deletes all the
others.  So the only line is the last one created.

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml";
layout="absolute" width="100%" height="100%">
<mx:Script>
        <![CDATA[
                import mx.charts.AxisRenderer;
                import mx.charts.CategoryAxis;
                import mx.collections.ArrayCollection;
                import mx.charts.series.LineSeries;
                import mx.charts.chartClasses.DataDescription;
                
                private var i:int = 0;
                [Bindable] private var aData:ArrayCollection = new 
ArrayCollection;
                private var second:Date = new Date;
                private var start:Number = new Number;
                private var end:Number = new Number;
        
                public function buttonClick():void
                {
                        addLine('line', createData("line"+i), 'display', 
"curve") 
                }
        
                public function addLine(displayName:String,
dataProvider:ArrayCollection, yField:String, Form:String):void
                {
                        var ls:LineSeries = new LineSeries();
                        ls.displayName = "Line"+i;
                        ls.dataProvider = dataProvider;
                        ls.yField = "name";
                        ls.xField = "x";
                        
                        var series:Array = linechart.series;
                        
                        series.push(ls);
                        
                        linechart.series. = series;
                        
                        //linechart.addChild(series);
                        //linechart.series[i] = new ChartLine(displayName, 
dataProvider,
yField, Form);
                        //linechart.validateDisplayList();
                        ++i;
                }
                
                public function createData(name:String):ArrayCollection
                {
                        //aData.removeAll();
                        
                        for(var j:uint=0; j<20; j++)
                        {
                                start = randomNumber(end);
                                end = randomNumber(start);
                                aData.addItem({"name":i*10, "x": start});
                                aData.addItem({"name":i*10, "x": end});
                        }
                        start =0;
                        end=0;
                        return aData;
                }
                
                public function randomNumber(greaterThan:Number):Number
                {
                        return (Math.random()*10) + greaterThan;
                }
        ]]>
</mx:Script>
        <mx:LineChart x="0" y="0" id="linechart" width="100%" height="100%"/>
                
        <mx:Legend dataProvider="{linechart}" x="838"/>
        
        <mx:Button x="214" y="21" label="add line" click="buttonClick()"/>
        
</mx:Application>

Reply via email to