dVital
24.05.2007, 17:51
Делаю карту Питера на флеш все должно быть ужаса до тревиально - 2 слоя: на нижнем собственно карта, на верхний подгружаются различные указатели, которые подгружаются из xml - файла. Однако нижний слой показывается, а верхний (где должны быть загружены указатели) - нет. Наставил trace - ов - оказалось, что xml нормально парсится, мувики - создаются, координаты их и габариты - проставляются.
Здесь код функции, которая загружает xml и расставляет мувики на верхнем слое:
public function loadXML(url:String, type:Number, paper:MovieClip):Void {
var xml1:XML = new XML();
xml1.ignoreWhite = true;
xml1.load("ankets.xml");
xml1.onLoad = function(success) {
if (!success) {
trace("сбой в загрузке");
} else {
trace("загрузка прошла успешно");
var rootNode:XMLNode = xml1.firstChild;
trace("rootNode="+rootNode);
var k:Number = 0;
var x1:Number = 0;
var y1:Number = 0;
var x2:Number = 0;
var y2:Number = 0;
for (var ankets = rootNode.firstChild; ankets != null; ankets=ankets.nextSibling) {
trace(ankets);
var attribs:Array = ankets.attributes;
if (attribs["type"] == 1) {
var ank:MovieClip = paper.attachMovie("Ind", "anket"+String(k), paper.getNextHighestDepth());
} else {
var ank:MovieClip = paper.attachMovie("Salon", "anket"+String(k), paper.getNextHighestDepth());
}
trace("ank="+ank);
if (type == 1) {
x1 = 2;
y1 = 5;
}
if (type == 2) {
x1 = 7;
y1 = 11;
}
if (type == 3) {
x1 = 15;
y1 = 23;
}
if (type == 4) {
x1 = 31;
y1 = 45;
}
if (attribs['saved'] == "1") {
x2 = 2;
y2 = 5;
}
if (attribs['saved'] == "2") {
x2 = 7;
y2 = 11;
}
if (attribs['saved'] == "3") {
x2 = 15;
y2 = 23;
}
if (attribs['saved'] == "4") {
x2 = 31;
y2 = 45;
}
paper["anket"+String(k)]._x = Math.floor(attribs["x"]*x1/x2);
paper["anket"+String(k)]._y = Math.floor(attribs["y"]*y1/y2);
paper["anket"+String(k)]._width = 20;
paper["anket"+String(k)]._height = 20;
trace("x="+paper["anket"+String(k)]._x);
trace("y="+paper["anket"+String(k)]._y);
k++;
}
}
};
}
Здесь код функции, которая загружает xml и расставляет мувики на верхнем слое:
public function loadXML(url:String, type:Number, paper:MovieClip):Void {
var xml1:XML = new XML();
xml1.ignoreWhite = true;
xml1.load("ankets.xml");
xml1.onLoad = function(success) {
if (!success) {
trace("сбой в загрузке");
} else {
trace("загрузка прошла успешно");
var rootNode:XMLNode = xml1.firstChild;
trace("rootNode="+rootNode);
var k:Number = 0;
var x1:Number = 0;
var y1:Number = 0;
var x2:Number = 0;
var y2:Number = 0;
for (var ankets = rootNode.firstChild; ankets != null; ankets=ankets.nextSibling) {
trace(ankets);
var attribs:Array = ankets.attributes;
if (attribs["type"] == 1) {
var ank:MovieClip = paper.attachMovie("Ind", "anket"+String(k), paper.getNextHighestDepth());
} else {
var ank:MovieClip = paper.attachMovie("Salon", "anket"+String(k), paper.getNextHighestDepth());
}
trace("ank="+ank);
if (type == 1) {
x1 = 2;
y1 = 5;
}
if (type == 2) {
x1 = 7;
y1 = 11;
}
if (type == 3) {
x1 = 15;
y1 = 23;
}
if (type == 4) {
x1 = 31;
y1 = 45;
}
if (attribs['saved'] == "1") {
x2 = 2;
y2 = 5;
}
if (attribs['saved'] == "2") {
x2 = 7;
y2 = 11;
}
if (attribs['saved'] == "3") {
x2 = 15;
y2 = 23;
}
if (attribs['saved'] == "4") {
x2 = 31;
y2 = 45;
}
paper["anket"+String(k)]._x = Math.floor(attribs["x"]*x1/x2);
paper["anket"+String(k)]._y = Math.floor(attribs["y"]*y1/y2);
paper["anket"+String(k)]._width = 20;
paper["anket"+String(k)]._height = 20;
trace("x="+paper["anket"+String(k)]._x);
trace("y="+paper["anket"+String(k)]._y);
k++;
}
}
};
}