Elrian
16.09.2007, 16:38
Здравствуйте!
Делаю построение линейных графиков, данные берутся из XML файла
<countries>
<country id="Albania" color="0x990000">
<param year="1960" value="1.210" />
<param year="1961" value="1.235" />
.....
</country>
.......
</countries>
Написала 2 класса - общий класс для отрисовки координатной плоскости
class Graph{
private var gContainer:MovieClip;
private var width:Number;
private var height:Number;
private var plots:Array = new Array();
private static var depth:Number = 0;
public function Graph(container:MovieClip){
depth++;
gContainer = container.createEmptyMovieClip("__graph" + depth,depth);
width = container._width;
height = container._height;
}
public function addPlot(plot:GraphLine):Void { plots.push(plot); }
.........
public function render(){
var bounds = getBounds();
plots[0].render(gContainer,width,height,bounds);
}
}
и класс для создания линейного графика на данной плоскости
class GraphLine{
private var gThickness:Number = 1;
private var gColor = 0x000000;
private var points:Array = new Array();
private static var depth:Number = 0;
public function GraphLine(){ depth++; }
public function addPoint(xVal,yVal):Void { this.points.push({x:xVal,y:yVal}); }
.........
}
И собственно сам обработчик
my_xml = new XML();
my_xml.ignoreWhite = true;
my_xml.onLoad = function(ok) {
if (ok) {
F_readData();
}
};
my_xml.load("database.xml");
F_readData = function () {
var len = my_xml.childNodes[0].childNodes.length;
var line = new Array();
var graph = new Graph(_root.base);
for(var i=0; i<len; i++){
var country = my_xml.childNodes[0].childNodes[i];
var id = country.attributes.id;
line[i] = new GraphLine();
line[i].setColor(country.attributes.color);
var paramsNum = country.childNodes.length;
for(var j=0; j<paramsNum; j++){
line[i].addPoint(country.childNodes[j].attributes.year,country.childNodes[j].attributes.value);
}
graph.addPlot(line[i]);
}
graph.render();
}
В случае создания 1-ого экземпляра GraphLine, все нормально, но когда добавляю 2-ой , он уже при инициализации забит данными 1-ого объекта,
а при добавке ему точек (line[i].addPoint) , они добавляются так же и 1-ому объекту.
Подскажите пожалуйста, что я сделала не так
Делаю построение линейных графиков, данные берутся из XML файла
<countries>
<country id="Albania" color="0x990000">
<param year="1960" value="1.210" />
<param year="1961" value="1.235" />
.....
</country>
.......
</countries>
Написала 2 класса - общий класс для отрисовки координатной плоскости
class Graph{
private var gContainer:MovieClip;
private var width:Number;
private var height:Number;
private var plots:Array = new Array();
private static var depth:Number = 0;
public function Graph(container:MovieClip){
depth++;
gContainer = container.createEmptyMovieClip("__graph" + depth,depth);
width = container._width;
height = container._height;
}
public function addPlot(plot:GraphLine):Void { plots.push(plot); }
.........
public function render(){
var bounds = getBounds();
plots[0].render(gContainer,width,height,bounds);
}
}
и класс для создания линейного графика на данной плоскости
class GraphLine{
private var gThickness:Number = 1;
private var gColor = 0x000000;
private var points:Array = new Array();
private static var depth:Number = 0;
public function GraphLine(){ depth++; }
public function addPoint(xVal,yVal):Void { this.points.push({x:xVal,y:yVal}); }
.........
}
И собственно сам обработчик
my_xml = new XML();
my_xml.ignoreWhite = true;
my_xml.onLoad = function(ok) {
if (ok) {
F_readData();
}
};
my_xml.load("database.xml");
F_readData = function () {
var len = my_xml.childNodes[0].childNodes.length;
var line = new Array();
var graph = new Graph(_root.base);
for(var i=0; i<len; i++){
var country = my_xml.childNodes[0].childNodes[i];
var id = country.attributes.id;
line[i] = new GraphLine();
line[i].setColor(country.attributes.color);
var paramsNum = country.childNodes.length;
for(var j=0; j<paramsNum; j++){
line[i].addPoint(country.childNodes[j].attributes.year,country.childNodes[j].attributes.value);
}
graph.addPlot(line[i]);
}
graph.render();
}
В случае создания 1-ого экземпляра GraphLine, все нормально, но когда добавляю 2-ой , он уже при инициализации забит данными 1-ого объекта,
а при добавке ему точек (line[i].addPoint) , они добавляются так же и 1-ому объекту.
Подскажите пожалуйста, что я сделала не так