Foros del Web » Creando para Internet » Flash y Actionscript »

Mostrar iconos a partir de valores XML

Estas en el tema de Mostrar iconos a partir de valores XML en el foro de Flash y Actionscript en Foros del Web. No sé si habré acertado con el título del post, pero es que no sé realmente cómo preguntarlo... Os comento lo que quiero hacer: a ...
  #1 (permalink)  
Antiguo 10/12/2007, 17:48
 
Fecha de Ingreso: abril-2006
Mensajes: 69
Antigüedad: 11 años, 8 meses
Puntos: 0
Mostrar iconos a partir de valores XML

No sé si habré acertado con el título del post, pero es que no sé realmente cómo preguntarlo...

Os comento lo que quiero hacer: a partir de un documento xml, recuperar ciertos valores, y en un Flash dibujar ciertos iconos a partir de esos valores.

Por ejemplo:

Tengo un mapa del tiempo. Quiero que en cada provincia o zona aparezca un icono de nubes, sol, lluvia, nieve, etc, dependiendo del tiempo que haga en cada provincia.

El valor del tiempo de cada provincia sale en el xml. De este modo:

---------

<?xml version="1.0" encoding="ISO-8859-1"?>
<provincias>
<provincia id="1" provincia ="Madrid" tiempo="nubes" temp="5-12º" />
<provincia id="2" provincia ="Barcelona" tiempo="sol" temp="0-5º" />
<provincia id="3" provincia ="Valencia" tiempo="lluvia" temp="8-15º" />
<provincia id="5" provincia ="Bilbao" tiempo="nieve" temp="5-11º" />
<provincia id="4" provincia ="Sevilla" tiempo="nubes" temp="3-11º" />
</provincias>

---------

Entonces, desde Flash recupero estos valores, de la siguiente forma (perdón por el tocho):

---------

System.useCodepage = true;
XML.prototype.ignoreWhite = true;
datos_txt.autoSize = "left";
datos_xml = new XML();
datos_xml.onLoad = cargarDatos;
provincias_array = new Array();
function cargarDatos(exito) {
if (exito) {
provinciasCargados = this.firstChild.childNodes;
for (var k = 0; provinciasCargados[k]; k++) {
pasar_a_array(provinciasCargados[k]);
}
delete provinciasCargados;
delete datos_xml;
verProvincias();
} else {
}
}
function pasar_a_array(nodo) {
var objetoProvincia = new Object();
var atributos = nodo.attributes;
objetoProvincia.provincia = atributos.provincia;
objetoProvincia.tiempo = atributos.tiempo;
objetoProvincia.temp = atributos.temp;
objetoProvincia.id = Number(atributos.id);
pueblos_array.push(objetoProvincia);
}
function verProvincias() {
escribir = "";
for (var i = 0; provincias_array[i]; i++) {
escribir += "<b>"+provincias_array[i].provincia+": </b>"+provincias_array[i].tiempo+" - <b>Temperatura: </b>"+provincias_array[i].temp+"<br>";
}
// quito el último <br>
escribir = escribir.substring(0, escribir.length-4);
}
datos_xml.load("tiempo.xml");
stop();

---------

Con esto, consigo que en un texto dinámico salgan los valores recogidos del XML: por cada provincia, me pone el valor referente a su tiempo y el valor referente a su temperatura.

Pero lo que quiero es que, además, o en vez de estos valores, salga un icono con el sol dibujado, o la nube, la nieve, o lo que corresponda.

Previamente ya he dibujado esos iconos en la biblioteca, sólo necesito que me los coloque en el mapa que he dibujado como fondo.

Resumiendo: necesito que me "dibuje" un icono u otro, dependiendo del valor de esa variable; y necesito que ese icono aparezca en su sitio correcto, justo en su provincia (de la que conozco los valores x e y).

Esto es todo. ¿Es demasiado? A lo mejor a vosotros os parece muy facil lo que a mí me parece una tarea titánica, por eso os pregunto. Pero es que justo estoy comenzando a aprender ActionScript, pues llevo años usando Flash, y lo poco que hacía era porque siempre me ayudaban con algún código.

Se admite cualquier tipo de sugerencia o mejora, por supuesto.

Muchas gracias y un saludo.

Moleman.
  #2 (permalink)  
Antiguo 11/12/2007, 03:53
 
Fecha de Ingreso: abril-2006
Mensajes: 69
Antigüedad: 11 años, 8 meses
Puntos: 0
Re: Mostrar iconos a partir de valores XML

Me contesto a mí mismo, pues algo he conseguido...

He simplificado el código. Mi XML ahora es el siguiente:

---------

<provincias>
<tiempo>Nubes</tiempo>
<tiempo>Sol</tiempo>
<tiempo>Lluvia</tiempo>

Etc.......

</provincias>

---------

Y mi código:

---------

misdatos = new XML();

misdatos.ignoreWhite = true;
misdatos.load("datos.xml");

misdatos.onLoad = function () {
trace(misdatos.firstChild.childNodes[0]);
if (misdatos.firstChild.childNodes[0] == "Nubes") {
_root.nubes01._alpha = 100;
}
}

---------

Como veis, he metido un IF. Si el valor del primer elemento es igual a nubes, entonces tiene que aparecer un clip de película llamado nubes01, cuya visibilidad está a 0.

Lo que hago es darle una visibilidad 100, y ya está. En principio, aunque sea costoso, puedo meter muchos símbolos con visibilidad 0, y que aparezcan con unos IF como el que véis.

Sin embargo, la igualdad no me funciona. ¿Podéis mirar a ver qué está mal en la siguiente línea?:

if (misdatos.firstChild.childNodes[0] == "Nubes")

Se supone que el valor del elemento del array es "Nubes", pues así lo he escrito yo (y así lo compruebo con el trace). Pero al igualar no me funciona. ¿Se puede comprobar de este modo? ¿Está mal escrito?

Muchas gracias de nuevo.
  #3 (permalink)  
Antiguo 11/12/2007, 04:46
 
Fecha de Ingreso: abril-2006
Mensajes: 69
Antigüedad: 11 años, 8 meses
Puntos: 0
Re: Mostrar iconos a partir de valores XML

¡Ya me ha salido!

Que nadie se prepare un megapost de ayuda, que ya no hace falta, je, je...

En breve posteo el código completo para el que lo quiera aprovechar.

Un saludo.

Moleman.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:02.