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

Insertar datos desde un xml

Estas en el tema de Insertar datos desde un xml en el foro de Flash y Actionscript en Foros del Web. Hola amigos! Estoy empezando con lo del XML en combinación con flash y me surgen algunos problemas. Mi XML tiene el siguiente aspecto: Código: <?xml ...
  #1 (permalink)  
Antiguo 10/01/2006, 18:53
 
Fecha de Ingreso: noviembre-2003
Ubicación: España->Madrid
Mensajes: 368
Antigüedad: 14 años
Puntos: 0
Insertar datos desde un xml

Hola amigos! Estoy empezando con lo del XML en combinación con flash y me surgen algunos problemas.

Mi XML tiene el siguiente aspecto:

Código:
<?xml version="1.0" encoding="8859-1"?>
<book>
<NombreDelProducto1 texto="Texto del Producto 1" />
<NombreDelProducto2 texto="Texto del Producto 2" />
<NombreDelProducto3 texto="Texto del Producto3" />
</book>
Pues bien, me gustaría que en la "portada" del flash que estoy haciendo, llenarla con el listado de todos los productos. Es decir, que aparezca Producto1, debajo Producto2, Producto 3, etc... en columnas. Cuando se llena una columna que empiece otra o algo así. Esto último aún lo tengo que pensar. Naturalemente, cogiendo los nombres del XML.

Bueno ahora viente lo interesante. Quiero que al pinchar sobre el nombre de un producto, la pelicula se dirija al fotograma2 donde se muestra todo el texto del producto ("Texto del producto1", en este caso). Naturalemente también va con foto y esas cosas pero vamos a lo simple. El problema que tengo en este punto es como decirle a flash que tiene que obtener la información de la rama del Producto1 o del 2 vamos, según haya pinchado. Una vez indicada la rama de donde tiene que coger la información el resto creo que lo puedo resolver yo solo, es decir, el texto en este recuadro, la foto aki, y todas esas cosas.

Espero no haberos liado mucho.

Gracias de antemano!
  #2 (permalink)  
Antiguo 11/01/2006, 07:26
Avatar de SAPINTO  
Fecha de Ingreso: junio-2005
Ubicación: just another fucked up pl
Mensajes: 777
Antigüedad: 12 años, 5 meses
Puntos: 0
hey, no tengo idea, pero ve a http://www.gotoandlearn.com, eso te puede dar una mano
__________________
if(user=="female" && user>="hot"){
user.gotoAndStop("sapinto's bed");
}
mi portafolio
  #3 (permalink)  
Antiguo 11/01/2006, 08:38
 
Fecha de Ingreso: noviembre-2003
Ubicación: España->Madrid
Mensajes: 368
Antigüedad: 14 años
Puntos: 0
Gotoandlearn

Hola Sapinto!

Gracias por la recomendacion de la web, pero ya la cogi antes de otro post que tambien lo pusiste.
  #4 (permalink)  
Antiguo 11/01/2006, 15:36
 
Fecha de Ingreso: abril-2005
Mensajes: 372
Antigüedad: 12 años, 7 meses
Puntos: 0
A verrrgamota

Bueno, vamos a ver, básicamente sera algo asi:
tu XML
Código:
<?xml version="1.0" encoding="8859-1"?>
<book>

<NombreDelProducto1 texto="Texto del Producto 1" detalle="Detalle del producto 1" detalles2="Otros detalles del producto 1"/>
<NombreDelProducto2 texto="Texto del Producto 2" detalle="Detalle del producto 2" detalles2="Otros detalles del producto 2"/>
<NombreDelProducto3 texto="Texto del Producto3" detalle="Detalle del producto3" detalles2="Otros detalles del producto3"/>
</book>
Ahi tenemos un xml con los atributos texto detalle y detalles2
Ahora cre un fla con 2 frames, en el 1er frame 1 layer actions y en otro layer textos. En actions pega este script:
Código:
stop();
datos = new XML();
datos.ignoreWhite = true;
datos.onLoad = function() {
	parseXML();
};
_global.xml_array = new Array();
datos.load("datos.xml");
parseXML = function () {
	xml_datos = datos.firstChild.childNodes;
	
	
productos1.text = xml_datos[0].attributes.texto;
productos2.text = xml_datos[1].attributes.texto;
productos3.text = xml_datos[2].attributes.texto;
}
p_1.onRelease = function() {
	_global.xml_array.push({texto:xml_datos[0].attributes.texto, detalle:xml_datos[0].attributes.detalle, detalles2:xml_datos[0].attributes.detalles2});
	gotoAndStop(2);
	trace(_global.xml_array.length)
}

p_2.onRelease = function(){
	_global.xml_array.push({texto:xml_datos[1].attributes.texto, detalle:xml_datos[1].attributes.detalle, detalles2:xml_datos[1].attributes.detalles2})
	gotoAndStop(2)
}

p_3.onRelease = function(){
	_global.xml_array.push({texto:xml_datos[2].attributes.texto, detalle:xml_datos[2].attributes.detalle, detalles2:xml_datos[2].attributes.detalles2})
	gotoAndStop(2)
}
En ese mismo frame en el layer textos crea 3 cajas de txt dinamico y llamalas en su nombre de instancia productos1, productos2 y productos3 respectivamente. Al lado de cada caja de txt pon un boton y llamalo en sus instancias p_1, p_2 y p_3.
Hasta ahi ok, ahora en el 2do frame en el layer actions pon este script:
Código:
stop();

mostrarInformacion = function () {
	if (_global.xml_array.length != 0) {
		for (i in _global.xml_array) {
			producto.text = _global.xml_array[i].texto; 
			detalle.text = _global.xml_array[i].detalle;
			detalle2.text = _global.xml_array[i].detalles2;
			
		}
	} else { detalle2.text = "No hay nada que mostrar...MWAHAHAHAHA";}
}
mostrarInformacion();
Y lissssstouuuuu.
El tema es asi, cuando cargas tu fla este carga el xml, vuelca los datos del atributo texto de cada uno de los nodos, cuando haces click en alguno de los botones este guarda en un array global los atributos correspondientes al producto que seleccionaste y los muestra en la pantalla siguiente a traves d una funcion que lee el array global.
Esto es básico (tanto que lo aprendí mientras lo hacía juá!!) pero te va a servir de guia para tu proyecto...o almenos eso espero
Probalo, estudialo y contanos como te fué
Suerte!!
  #5 (permalink)  
Antiguo 11/01/2006, 15:39
 
Fecha de Ingreso: abril-2005
Mensajes: 372
Antigüedad: 12 años, 7 meses
Puntos: 0
HEEEE!!!! me olvidaba una parte importantisima!!
En el 2do frame en el layer textos crea 3 cajas de texto dinamico con los siguientes nombres de instancia: producto, detalle y detalle2
jejejeej, sin esto como que no te iba a mostrar nada
  #6 (permalink)  
Antiguo 11/01/2006, 19:46
 
Fecha de Ingreso: noviembre-2003
Ubicación: España->Madrid
Mensajes: 368
Antigüedad: 14 años
Puntos: 0
Me quito el sombrero!

Es justo lo que necesitaba! Muchas gracias Otraverix
  #7 (permalink)  
Antiguo 11/01/2006, 20:03
 
Fecha de Ingreso: noviembre-2003
Ubicación: España->Madrid
Mensajes: 368
Antigüedad: 14 años
Puntos: 0
Otraverix solo un detalle mas,

se podría, a los botones que te llevan a la info del producto, llamarlos 1,2,3,4... y asi crear una funcion standard xa todos (sq serían casi 200 productos).

Se me ocurre algo así como i=nombredelboton-1 y el numero que va entre corchetes ponerle una i?

No tengo ni idea de AS asñi que en caso de poderse, y si no es mucha molestia, podría recrear un ejemplo con lo que ya tenemos?

Supongo que sería algo asi

1.onRelease = function() {
i=numeroboton-1
_global.xml_array.push({texto:xml_datos[i].attributes.texto, detalle:xml_datos[i].attributes.detalle, detalles2:xml_datos[i].attributes.detalles2});
gotoAndStop(2);
trace(_global.xml_array.length)
}

Gracias de antemano!
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 10:18.