Comunidad de diseño web y desarrollo en internet online

flash que lea datos de un xml y pinte un mapa

Ir a página Anterior  1, 2

Foros de discusión > Flash

Citar            
MensajeEscrito el 21 Oct 2011 02:56 am
o sea el codigo quedaria asi:

System.useCodepage = true;
XML.prototype.ignoreWhite = true;
datos_txt.autoSize = "left";
datos_xml = new XML();
datos_xml.onLoad = cargarDatos;
listado_array = new Array();
function cargarDatos(exito) {
if (exito) {
listadoCargados = this.firstChild.childNodes;
for (var k = 0; listadoCargados[k]; k++) {
pasar_a_array(listadoCargados[k]); }
delete listadoCargados;
delete datos_xml;
verListado();


}
}
function pasar_a_array(listado) {



var objetoProvincia = new Object();
var atributos = listado.attributes;
//objetoProvincia.color = (atributos.color == "Amarillo") ? 0xFFF59A : 0xE2003B;
if(atributos.color == "Amarillo"){
objetoProvincia.color = 0xFFFF00; }
else if(atributos.color == "Rojo"){
objetoProvincia.color = 0xFF0000; }
else if (atributos.color == "Verde") {
objetoProvincia.color = 0x00FF00; }
objetoProvincia.valor = atributos.valor;
objetoProvincia.id = Number(atributos.id);
listado_array.push(objetoProvincia);
//trace(this["p"+atributos.id])
var col = new Color(this["p"+atributos.id]).setRGB(objetoProvincia.color);//el nombre de instancia es "p"+ un nro de id
}
function verListado() {
listado = "";
for (var i = 0; listado_array[i]; i++) {
listado += "<b>"+listado_array[i].color+" "+listado_array[i].valor+"</b>"+listado_array[i].id+"</b><br>";
objetoProvincia.valor = atributos.valor;
this["t"+atributos.id].text = atributos.valor;


}
}

datos_xml.load("pueblos.xml");
stop();
lo que no me queda claro es donde coloco el campo de texto y que nombre iria de instacia, seria tid1?? mucahs graicas por responder.

Por galape

11 de clabLevel



 

msie8
Citar            
MensajeEscrito el 21 Oct 2011 03:04 am
seguro q estoy poniendo mal la caja de texto, xq no me funciona!

Por galape

11 de clabLevel



 

msie8
Citar            
MensajeEscrito el 21 Oct 2011 03:09 am
creo q el codigo correcto seria

System.useCodepage = true;
XML.prototype.ignoreWhite = true;
datos_txt.autoSize = "left";
datos_xml = new XML();
datos_xml.onLoad = cargarDatos;
listado_array = new Array();
function cargarDatos(exito) {
if (exito) {
listadoCargados = this.firstChild.childNodes;
for (var k = 0; listadoCargados[k]; k++) {
pasar_a_array(listadoCargados[k]); }
delete listadoCargados;
delete datos_xml;
verListado();


}
}
function pasar_a_array(listado) {



var objetoProvincia = new Object();
var atributos = listado.attributes;
//objetoProvincia.color = (atributos.color == "Amarillo") ? 0xFFF59A : 0xE2003B;
if(atributos.color == "Amarillo"){
objetoProvincia.color = 0xFFFF00; }
else if(atributos.color == "Rojo"){
objetoProvincia.color = 0xFF0000; }
else if (atributos.color == "Verde") {
objetoProvincia.color = 0x00FF00; }
objetoProvincia.valor = atributos.valor;
this["t"+atributos.id].text = atributos.valor;
objetoProvincia.id = Number(atributos.id);
listado_array.push(objetoProvincia);
//trace(this["p"+atributos.id])
var col = new Color(this["p"+atributos.id]).setRGB(objetoProvincia.color);//el nombre de instancia es "p"+ un nro de id

}
function verListado() { //esta funcion no entiendo que hace??
listado = "";
for (var i = 0; listado_array[i]; i++) {
listado += "<b>"+listado_array[i].color+" "+listado_array[i].valor+"</b>"+listado_array[i].id+"</b><br>";



}
}

datos_xml.load("pueblos.xml");
stop();
igual no se donde poner la caja de texto ys i el nombre tid1 es correcto como nombre de instancia, creo q estoy encloqueciendo xq no funciona!!

Por galape

11 de clabLevel



 

msie8
Citar            
MensajeEscrito el 21 Oct 2011 03:46 am
Si por ejemplo hay un MovieClip que se llama pid1, justo al ladito le pones la caja de texto con nombre de instancia tid1 (lo mismo para el resto) ... y si, la función verListado está totalmente al pedo

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 21 Oct 2011 11:39 am
jorge, mi movie clip tiene como nombre de instancia p1 y asi funciona me lo pinta de color si pongo pid1 no me lo pinta, y el texto sigue sin pintarlo, coloque el texto dentro del moviclip y fuera del moviclip con el nombre de instancia tid1 pero nada. Realmente no me doy cuenta en que fallo?

Por galape

11 de clabLevel



 

msie8
Citar            
MensajeEscrito el 21 Oct 2011 02:04 pm
Ok, esta línea asume que tienes uns serie de MovieClips que pintas

var col = new Color(this["p"+atributos.id]).setRGB(objetoProvincia.color);//el nombre de instancia es "p"+ un nro de id

Con nombres tipo pid1, pid2, pid3, etc

La línea que te agregué asume lo mismo, pero con textfields. Es decir al lado del MovieClip pones un campo de texto siguiendo la misma convención de nombres

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 21 Oct 2011 02:07 pm
no mira, la instancia de mi movie clip se llama p1, p2 etc, y la caja de texto no funciona ni con tid1 ni con t1, realmente no se qeu hago mal, el codigo quedo asi:

var objetoProvincia = new Object();
var atributos = listado.attributes;
if(atributos.color == "Amarillo"){
objetoProvincia.color = 0xFFFF00; }
else if(atributos.color == "Rojo"){
objetoProvincia.color = 0xFF0000; }
else if (atributos.color == "Verde") {
objetoProvincia.color = 0x00FF00; }
objetoProvincia.valor = atributos.valor;
this["t"+atributos.id].text = atributos.valor;
objetoProvincia.id = Number(atributos.id);
listado_array.push(objetoProvincia);
var col = new Color(this["p"+atributos.id]).setRGB(objetoProvincia.color);//el nombre de instancia es "p"+ un nro de id

}

Por galape

11 de clabLevel



 

msie8
Citar            
MensajeEscrito el 21 Oct 2011 02:09 pm
Primero hardcodea un valor a ver si los textfield estan


this["t"+atributos.id].text = "Soy la caja de texto";

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 21 Oct 2011 02:14 pm
si ahora funciona!!! mil gracias!! sigo y cuando lo termine todo lo subo asi otro puede usarlo!! graciasssssssssssssssssssss.

Por galape

11 de clabLevel



 

msie8
Citar            
MensajeEscrito el 21 Oct 2011 02:21 pm
t hago una consulta viste que el color lo definimos desde el flash, hay forma de que el color se controle solo desde el xml, o sea q si yo a futuro quiero q algo q estaba de amarillo se pinte de azul, solo lo haga con cambiar la data en el xml.

actualmetne es
if(atributos.color == "Amarillo"){
objetoProvincia.color = 0xFFFF00; }
else if(atributos.color == "Rojo"){
objetoProvincia.color = 0xFF0000; }
else if (atributos.color == "Verde") {
objetoProvincia.color = 0x00FF00; }

Por galape

11 de clabLevel



 

msie8
Citar            
MensajeEscrito el 21 Oct 2011 06:05 pm
Si en vez de poner "amarillo" en el XML pones 0x00FF00, puedes hacer algo así

objetoProvincia.color = parseInt(atributos.color, 16);

Pero debes sacar los if (atributos.color == "Verde") , etc

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 21 Oct 2011 06:09 pm
Gracias!! realmente fue de mucha ayuda!!

Por galape

11 de clabLevel



 

msie8
Citar            
MensajeEscrito el 26 Oct 2011 08:41 pm
jorge tengo otro problema, el xml fue modificado
<mapa titulo="ZONAS">
<provincias>
<provincia id="1" color="0xFF00FF" valor="2" />
<provincia id="2" color="0xFF00FF" valor="5" />
<provincia id="3" color="0x00FF53" valor="8" />
<provincias/>
<leyendas>
<leyenda id="4" color="0xFF00FF" referencia="XXXX" />
<leyenda id="5" color="0x00FF53" referencia="YYYY" />
<leyendas/>
</mapa>

Y estoy intentando modificar el as, pero no me funciona, como deberia leerlo??

Por galape

11 de clabLevel



 

msie8
Citar            
MensajeEscrito el 27 Oct 2011 12:50 pm
arme este as pero no me funciona, solo me muestra lo de provincias

System.useCodepage = true;
XML.prototype.ignoreWhite = true;
//datos_txt.autoSize = "left";
datos_xml = new XML();
datos_xml.onLoad = cargarDatos;
mapa_array = new Array();
function cargarDatos(exito) {
if (exito) {
mapaCargados = this.firstChild.firstChild.childNodes;
for (var k = 0; mapaCargados[k]; k++) {
pasar_a_array(mapaCargados[k]);
pasar_a_provincias(mapaCargados[k]);
pasar_a_leyendas(mapaCargados[k]); }
delete mapaCargados;
delete datos_xml;
verMapa();

}
}
function pasar_a_array(mapa) {
var objetoMapa = new Object();
var atributos = mapa.attributes;
objetoMapa.id = Number(atributos.id);
objetoMapa.titulo = atributos.titulo;
this["n"+atributos.id].text = atributos.titulo;
mapa_array.push(objetoMapa);

}

function pasar_a_provincias(mapa) {
var objetoProvincias = new Object();
var atributos = mapa.attributes;
objetoProvincias.color = parseInt(atributos.color, 16);
objetoProvincias.valor = atributos.valor;
this["t"+atributos.id].text = atributos.valor;
objetoProvincias.id = Number(atributos.id);
mapa_array.push(objetoProvincia);
var col = new Color(this["p"+atributos.id]).setRGB(objetoProvincias.color);
}
function pasar_a_leyendas(mapa) {
var objetoLeyendas = new Object();
var atributos = mapa.attributes;
objetoLeyendas.color = parseInt(atributos.color, 16);
objetoLeyendas.id = Number(atributos.id);
objetoLeyendas.referencia = atributos.referencia;
this["r"+atributos.id].text = atributos.referencia;
mapa_array.push(objetoLeyendas);
var col = new Color(this["g"+atributos.id]).setRGB(objetoLeyendas.color);
}

datos_xml.load("valores.xml");
stop();

espero me puedan ayudar!! gracias!!

Por galape

11 de clabLevel



 

msie8
Citar            
MensajeEscrito el 28 Oct 2011 11:47 am
Hacer un nodo para provincias y otro para leyendas no es una estructura buena si ambas estan relacionadas. Pide que metan todo en provincias .... ¿o como se supone que relaciones ambas?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 28 Oct 2011 12:33 pm
la verdad q no se pero tengo ese xml y tengo que hacer que el mapa se pinte y muestre esos datos. Realmente no se como poder hacerlo, estuve intentando pero no logro nada.

Por galape

11 de clabLevel



 

msie8
Citar            
MensajeEscrito el 28 Oct 2011 08:28 pm
¿Que relación hay entre provincias y leyendas? ¿Cada leyenda corresponde a una provincia?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 29 Oct 2011 04:11 pm
no es una leyenda general x color, ej, color rojo tal valor, color verde tal valor, es gral.

Por galape

11 de clabLevel



 

msie8
Citar            
MensajeEscrito el 29 Oct 2011 07:54 pm
Ok, entonces ese nodo no importa, vale el de provincias, prueba cambiando el nodo que usas para el listado

listadoCargados = this.firstChild.firstChild.childNodes;

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 29 Oct 2011 08:07 pm
no eso ya lo probe antes de consultar al foro y directamente si pongo ese linea no me lee nada del xml y me lo deja el mampa en gris.

Por galape

11 de clabLevel



 

msie8
Ir a página Anterior  1, 2
Foros de discusión > Flash

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.