Tema: Poltergeist
Ver Mensaje Individual
  #2 (permalink)  
Antiguo 27/04/2004, 09:08
Elecash
 
Fecha de Ingreso: marzo-2002
Ubicación: BarnaCity
Mensajes: 109
Antigüedad: 22 años, 1 mes
Puntos: 0
Bueno, al final he sacado el problema...

La cuestión en si es anidar la carga de los documentos XML, así hasta que no se cargue del todo el primer XML y hagamos las acciones de la funcion para ese XML no cargara el siguiente...

Para los interesados dejo el codigo:

//conexion entre el "menu_areas.swf" y este swf ,pasa el nro de area activa
incoming_lc = new LocalConnection();
//ejecutar el metodo asignado en el paso de parametros
incoming_lc.methodToExecute = function(param) {
_root.area = String(param);

//borra clips anteriores
for (i=0; i<=largo; i++) {
clip = "zona"+i;
removeMovieClip("zona"+i);
}

//cargo el 1er XML cojo Witdh y Height del mapa del area que voy a dibujar y el nombre
doc2 = new XML();
doc2.ignoreWhite = true;
doc2.onLoad = function() {
// hago un recorrido en el areas.xml porque el nro de area es dist a el nro de posicion de esa area en el xml
//(ej, area11 es el nro 10) abrir areas.xml,y alarmas.xml y ahi se ve claro
for (n=0; n<=doc2.firstChild.childNodes.length-1; n++) {
if (String(doc2.firstChild.childNodes[n].childNodes[0].childNodes) == area) {
_root.nombre = doc2.firstChild.childNodes[n].childNodes[1].childNodes;
_root.w = doc2.firstChild.childNodes[n].childNodes[2].firstChild.nodeValue;
_root.h = doc2.firstChild.childNodes[n].childNodes[3].firstChild.nodeValue;
}
}
_root.w = Number(_root.w);
_root.h = Number(_root.h);
mapear();
_root.prueba1 = "ha entrado en 2";
//cargo 2do XML y cojo la cantidad de zonas que tiene el area
doc3 = new XML();
doc3.ignoreWhite = true;
doc3.onLoad = function() {
_root.largo = doc3.firstChild.childNodes.length;
dibujar();
_root.prueba2 = "ha entrado en 3";
//cargo el 3er XML y cojo los colores
doc1 = new XML();
doc1.ignoreWhite = true;
doc1.onLoad = function() {
_root.cant = doc1.firstChild.childNodes[0].childNodes.length;
colores = new Array(cant);
for (i=0; i<=cant-1; i++) {
colores[i] = doc1.firstChild.childNodes[0].childNodes[i].childNodes;
}
colorear();
ok3 = false;
ok1 = false;
_root.prueba3 = "ha entrado en 1";
}
doc1.load("../"+_root.puertoname+"/datos/xml_zonas/colores_"+_root.area+".xml");
};
doc3.load("../"+_root.puertoname+"/datos/xml_zonas/zonas"+_root.area+".xml");
}
doc2.load("../"+_root.puertoname+"/datos/xml_zonas/areas.xml");

}
// se hace la conexion de mas arriba
incoming_lc.connect("lc_name");
function mapear() {
//cargo fondo de imagen del puerto
loadMovie("../"+_root.puertoname+"/datos/areas_swf/area"+_root.area+".swf", _root.fondo);
//funciones del boton para abrir el mapa en grande
boton.onPress = function() {
variables = "?puerto="+_root.puertoname+"&area="+_root.area+"& titulo=Area "+_root.area+" "+_root.nombre;
pagina = "ventana.asp"+variables;
getURL("javascript:NewWindow=window.open('"+pagina +"','ventana','width="+(_root.w*0.8)+",height="+(_ root.h*0.8)+",left=150,top=50,toolbar=No,location= No,scrollbars=No,status=No,resizable=no,fullscreen =no');NewWindow.document.bgColor='black'; NewWindow.focus();void(0);", "", "POST");
};
//escalar fondo
if (_root.w>_root.h) {
_root.fondo._xscale = 18000/_root.w;
_root.fondo._yscale = _root.fondo._xscale;
} else {
_root.fondo._yscale = 20000/_root.h;
_root.fondo._xscale = _root.fondo._yscale;
}
}
//funcion que dibuja las zonas y pasa variables a la ventana nueva
function dibujar() {
zonas = new Array(_root.largo);
var pts;
// cantidad de zonas
j = 0;
i = 0;
_root.prueba3 = "";
while (i<=_root.largo-1) {
//coordenadas de cada zona
zonas[i] = doc3.firstChild.childNodes[i].childNodes[2].childNodes;
_root.zona_color = i;
// array con las coordenadas (cantidad de coordenadas x zona =10)
ptos = new Array(10);
// creo clip zona[i]
var clip = "zona"+i;
for (k=0; k<8; k++) {
ptos[k] = String(zonas[i]).split(";")[k];
}
//creo clip x zona
this.createEmptyMovieClip(clip, 1+i);
//pinto zonas
//si el nro de zona=al nro de zona del xml de los colores
if (i == zona_color) {
with (this[clip]) {
beginFill(0xCCCCCC, 70);
lineStyle(1, 0x000000, 100);
moveTo(ptos[0], ptos[1]);
lineTo(ptos[2], ptos[3]);
lineTo(ptos[4], ptos[5]);
lineTo(ptos[6], ptos[7]);
lineTo(ptos[0], ptos[1]);
endFill();
}
}
//si es una zona que no tiene color xq no esta en el xml de colores
if (i != zona_color) {
with (this[clip]) {
beginFill(0x000000, 70);
lineStyle(1, 0x000000, 100);
moveTo(ptos[0], ptos[1]);
lineTo(ptos[2], ptos[3]);
lineTo(ptos[4], ptos[5]);
lineTo(ptos[6], ptos[7]);
lineTo(ptos[0], ptos[1]);
endFill();
}
}
//si hay mas zonas dibujadas de las que me pasa el xml de colores
if (i>zona_color) {
j = j+1;
}
//escala zonas
this[clip]._xscale = _root.fondo._xscale;
this[clip]._yscale = _root.fondo._yscale;
this[clip]._x = this[clip]._x+10;
this[clip]._y = this[clip]._y+10;
i++;
j++;
}
}
function colorear() {
i = 0;
while (i<=_root.largo-1) {
with ("zona"+i) {
//crear objeto colorcuadro para colorear
colorcuadro = new Color("zona"+i);
colorstr = String(colores[i]);
if (colorstr == "V") {
colorcuadro.setRGB(0x009900);
} else if (colorstr == "R") {
colorcuadro.setRGB(0xFF0000);
} else if (colorstr == "N") {
colorcuadro.setRGB(0xFFCC00);
} else {
colorcuadro.setRGB(0x000099);
}
}
i++;
}
}


Un saludo y suerte con el codigo... XD

Raúl Jiménez
www.elecash.org