2011-10-13 54 views
0

我有如下類:Flex:動態創建的系列不會顯示在圖表上?

package my.controls.charts.series 
{ 
    import mx.charts.series.LineSeries; 
    import mx.collections.ArrayCollection; 
    import mx.graphics.SolidColorStroke; 

    import my.controls.charts.ICommonCharts; 

    public class TimeLineSeries extends LineSeries implements ICommonCharts 
    { 
     [Bindable] 
     protected var dataProviderLineSeries : ArrayCollection; 
     public  var rawData    : Array; 

     public function TimeLineSeries(seriesName : String) 
     { 
      super(); 
      this.displayName = seriesName; 
      this.yField  = "value"; 
      this.xField  = "dateBegin"; 

      this.sortOnXField = true; 
      this.filterData = true;   

      this.setStyle("form", "segment"); 

      var stroke : SolidColorStroke = new SolidColorStroke(); 
       stroke.color = 0xFF0000; 
       stroke.weight = 1; 
      this.setStyle("lineStroke", stroke); 

      rawData    = new Array(); 
      dataProviderLineSeries = new ArrayCollection(); 
      this.dataProvider  = dataProviderLineSeries; 
     } 

     public function Clear() : void 
     { 
      rawData = []; 
      dataProviderLineSeries.removeAll(); 
     } 

     public function ApplyData() : void 
     { 
      dataProviderLineSeries.removeAll(); 
      dataProviderLineSeries = new ArrayCollection(rawData); 
      dataProviderLineSeries.refresh(); 

     } 
    } 
} 

應用我試圖後續:

dinamicSeries:陣列=新的Array(); mySeries:TimeLineSeries = new TimeLineSeries('chronos'); mySeries.rawData = randomData(); //它是一個獲得一些隨機數據的函數 mySeries.ApplyData(); dinamicSeries.push(mySeries);
mainChart.series = dinamicSeries;

新的系列名稱出現在圖表上,但數據用盡,圖表始終保持空白。 - 我在做什麼錯?

回答

1

您是否影響到您新創建的系列的垂直軸?

+0

我已分配,但似乎並未影響它。有沒有特定的方法來做到這一點? –

+1

嗯,是的:mySeries.verticalAxis = myVerticalAxis; – LoremIpsum

+0

你可能會發現這個例子有助於http://flexdiary.blogspot.com/2008/08/charting-example.html –

1

您需要將public var rawData轉換爲getter/setter對,以便您可以使用它填充ArrayCollection。所以:

protected var _rawData:Array; 

public function get rawData():Array { 
    return _rawData; 
} 
public function set rawData(value:Array):void { 
    if (value != _rawData) { 
     _rawData = value; 
     dataProviderLineSeries.source = value; 
    } 
} 
+0

你好艾米。這種方式每當我添加元素時,它都會刷新數據。一些不可悲的東西。這不會解決我認爲的缺失繪圖...:| –

相關問題