Flex: как подать несколько строк различной длины массива в LineChart? - PullRequest
0 голосов
/ 20 января 2012

Я новичок в Flex. Я строил графики нескольких рядов на линейной диаграмме, где все эти серии имеют одинаковую длину. Теперь мне нужно построить новые данные, и каждая серия отличается друг от друга по длине. Вопрос в том, как изменить следующий код для этого.

Функция 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, массив3 и массив4 в x1, y1, x2, y2 (соответственно), если длина массивов1 и массив2 не равна длине массивов3 и массив4? Или эквивалентный результат.

Я предполагаю, что все должно поступать через dataSet, но мне интересно, можно ли просто как-то ссылаться на array1 (и т. Д.) Непосредственно из <mx:LineChart ...> или <mx:LineSeries ...>, чтобы не тратить память на ненужный массив (например, DataSet).

1 Ответ

0 голосов
/ 20 января 2012

Как насчет установки индекса в значение, если массив недостаточно длинный?

var array:Array = new Array();
trace(array.length); // 0
if (array.length < 10) {
    array[9] = undefined;
}
trace(array.length); // 10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...