2012-01-19 44 views
0

我是新來的Flex。我一直在線圖中繪製多個系列,其中所有這些系列的長度都相同。現在我需要繪製新的數據,每個系列的長度都不相同。問題是如何修改下面的代碼來做到這一點。Flex:如何在LineChart中輸入多個不同數組長度的序列?

initApp()函數在程序開始時調用,它調用函數genData()來生成用於在LineChart中繪圖的數據集。

public function initApp():void { 
     // Initialize data provider array. 
     dataSet = new ArrayCollection(genData()); 
    } 

    public function genData():Array { 
     var result:Array = []; 

     include "Data_File.as"; // load myarray<1|2|3|4> example data 

     for (var ii:int = 0; ii < myarray1.length; ii++) { 
      var localVals:Object = { 
       x1:myarray1[ii], 
       y1:myarray2[ii], 
       x2:myarray3[ii],  
       y2:myarray4[ii] 
      }; 
      result.push(localVals); // Push new object onto the data array. 
     }   
     return result; 
    } 

變量「dataSet」用於繪製多個系列。

<mx:LineChart id="myChart" dataProvider="{dataSet}"> 
    <mx:series> 
     <mx:LineSeries id="series1" xField="x1" yField="y2"/> 
     <mx:LineSeries id="series2" xField="x2" yField="y2"/> 
    </mx:series> 
</mx:LineChart> 

有人可以推薦如何放置數組1,數組2,ARRAY3和array4到X1,Y1,X2,Y2(分別)當陣列1的長度和數組2不等於說ARRAY3和array4?或者,等同的結果。我假設一切都通過數據集進入,但我不知道是否有可能以某種方式直接從<mx:LineChart ...><mx:LineSeries ...>直接引用array1(等),以避免在不必要的數組(例如dataSet)上浪費存儲空間。

+0

一種解決方案我發現了插入一個'的dataProvider = 「{} dataSet1的」'到'的的代碼'線,然後使用myarray1和myarray2 dataSet1的定義爲在完成genData ()(除了刪除x2和y2代碼行),然後更改initApp()函數以便爲dataSet1調用genData()一次,爲dataSet2調用另一次。 – ggkmath

回答

0

如果數組不夠長,那麼將索引設置爲一個值?

var array:Array = new Array(); 
trace(array.length); // 0 
if (array.length < 10) { 
    array[9] = undefined; 
} 
trace(array.length); // 10 
+0

感謝奈奎斯特,我的陣列非常大,我想知道是否有幾百個未定義的元素會影響性能。 – ggkmath

+0

試試看,如果這不起作用回發你的結果。或者,如果它成功,請再次發帖:) – John

+0

這看起來也是一種有效的解決方案。 – ggkmath

相關問題