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

Flash + XML

Estas en el tema de Flash + XML en el foro de Flash y Actionscript en Foros del Web. Hola buenas, vereis, estoy desarrollando una galería en Flash+XML para la venta de coches de segunda mano y he llegado a un punto en el ...
  #1 (permalink)  
Antiguo 20/05/2007, 13:16
Avatar de Jowy  
Fecha de Ingreso: febrero-2007
Ubicación: En la red
Mensajes: 232
Antigüedad: 10 años, 9 meses
Puntos: 0
Flash + XML

Hola buenas, vereis, estoy desarrollando una galería en Flash+XML para la venta de coches de segunda mano y he llegado a un punto en el que me he atascado y necesito que me ayudeis por favor... Solo necesito que me orienteis en cual podria ser la solucion. Seguro que es alguna tonteria pero no caigo...

Me explicaré: La galería consta de dos partes. La primera parte es una pagina en la que se ve una imagen pequeña de los coches que hay en venta y una descripción. Esto conseguirlo es fácil. Lo estoy haciendo con un par de bucles "for" que leen y extraen thumbnail+descripcion de cada coche que hay el XML y mediante attachMovie se cargan en un clip que sirve de plantilla. Esta primera plantilla se copia y reposiciona en el escenario para cada coche que encuentre en el XML.

La segunda parte es la complicada. Lo que pretendo es que al hacer click en alguno de los coches de la primera pagina se cargue otra plantilla (en otro movieClip) con los detalles del coche. Sería algo como esto:



Como veis la plantilla contiene varios datos de cada coche y varias fotos que se deberían leer del XML. Cada coche esta en el XML de esta manera:

Código:
<?xml version="1.0" encoding="Unicode"?>
<root>
 <coches>

   <familiares>

     <coche thumbnail="thumb5.jpg" descripcion="" marca="Rover" modelo="Loyser" precio="28000" color="Gris" motor="220cv" extras="Full equipe">
	<imagenes>
		 <minis>
			<imagen></imagen>
			<imagen></imagen>			
			<imagen></imagen>
			<imagen></imagen>			
		 </minis>
		 <grandes>
			<imagen></imagen>
			<imagen></imagen>			
			<imagen></imagen>
			<imagen></imagen>
		 </grandes>
	</imagenes>
      </coche>

     <coche thumbnail="nada.jpg" descripcion="" marca="" modelo="" precio="" color="" motor=""      extras="">
	.
        .
        .
        .
        .
  </coches>
</root>

Se que en la primera pagina se debería de crear un boton dinámicamente para cada coche que aparezca. Pero no se como hacer que cada botón quede asignado a cada uno de los coches, a cada uno de los nodos del xml.... Para así hacer click y que se cargue la segunda ficha con esos datos.... No se si me explico con claridad

Agradecería muchísimo una mínima ayuda
Gracias

Última edición por Jowy; 25/05/2007 a las 19:39
  #2 (permalink)  
Antiguo 20/05/2007, 19:10
Avatar de TMeister
Crazy Coder
 
Fecha de Ingreso: enero-2002
Ubicación: En la Oficina
Mensajes: 2.880
Antigüedad: 15 años, 11 meses
Puntos: 193
Re: Flash + XML

postea el codigo con el que creas las primeras imagenes. segun esto vemos que se puede hacer.
  #3 (permalink)  
Antiguo 25/05/2007, 20:21
Avatar de Jowy  
Fecha de Ingreso: febrero-2007
Ubicación: En la red
Mensajes: 232
Antigüedad: 10 años, 9 meses
Puntos: 0
Re: Flash + XML

Hola TMeister. El código que uso es este.

Código:
coches = new XML();
coches.ignoreWhite = true;
coches.onLoad = function(ok) {
	if (ok) {
		//procesar datos
		//Familiares
		familiares = this.firstChild.firstChild.firstChild.childNodes;
		for (i=0; i<familiares.length; i++) {
			var nuevoProyecto = filaFamiliares.attachMovie('MC_template', 'coche'+i, i);
			var distanciaFotos = 89;
			nuevoProyecto._x = i*distanciaFotos;
			nuevoProyecto.marca.text = familiares[i].attributes.marca;
			nuevoProyecto.imagen.thumb.imagename = familiares[i].attributes.thumbnail;
			nuevoProyecto.imagen.thumb.imgBlank.loadMovie('imagenes/thumbs/'+familiares[i].attributes.thumbnail);
			filaFamiliares._x = 512;
			filaFamiliares._y = 44;
		}
		//Deportivos
		deportivos = this.firstChild.firstChild.firstChild.nextSibling.childNodes;
		for (i=0; i<deportivos.length; i++) {
			var nuevoProyecto = filaDeportivos.attachMovie('MC_template', 'coche'+i, i);
			var distanciaFotos = 89;
			nuevoProyecto._x = i*distanciaFotos;
			nuevoProyecto.marca.text = deportivos[i].attributes.marca;
			nuevoProyecto.imagen.thumb.imagename = deportivos[i].attributes.thumbnail;
			nuevoProyecto.imagen.thumb.imgBlank.loadMovie('imagenes/thumbs/'+deportivos[i].attributes.thumbnail);
			filaDeportivos._x = 512;
			filaDeportivos._y = 142;
		}
		//Berlinas
		berlinas = this.firstChild.firstChild.firstChild.nextSibling.nextSibling.childNodes;
		for (i=0; i<berlinas.length; i++) {
			var nuevoProyecto = filaBerlinas.attachMovie('MC_template', 'coche'+i, i);
			var distanciaFotos = 89;
			nuevoProyecto._x = i*distanciaFotos;
			nuevoProyecto.marca.text = berlinas[i].attributes.marca;
			nuevoProyecto.imagen.thumb.imagename = berlinas[i].attributes.thumbnail;
			nuevoProyecto.imagen.thumb.imgBlank.loadMovie('imagenes/thumbs/'+berlinas[i].attributes.thumbnail);
			filaBerlinas._x = 512;
			filaBerlinas._y = 240;
		}
		//Compactos
		compactos = this.firstChild.firstChild.firstChild.nextSibling.nextSibling.nextSibling.childNodes;
		for (i=0; i<compactos.length; i++) {
			var nuevoProyecto = filaCompactos.attachMovie('MC_template', 'coche'+i, i);
			var distanciaFotos = 89;
			nuevoProyecto._x = i*distanciaFotos;
			nuevoProyecto.marca.text = compactos[i].attributes.marca;
			nuevoProyecto.imagen.thumb.imagename = compactos[i].attributes.thumbnail;
			nuevoProyecto.imagen.thumb.imgBlank.loadMovie('imagenes/thumbs/'+compactos[i].attributes.thumbnail);
			filaCompactos._x = 512;
			filaCompactos._y = 338;
		}
		//Todoterrenos
		todoterrenos = this.firstChild.firstChild.firstChild.nextSibling.nextSibling.nextSibling.nextSibling.childNodes;
		for (i=0; i<todoterrenos.length; i++) {
			var nuevoProyecto = filaTodoterrenos.attachMovie('MC_template', 'coche'+i, i);
			var distanciaFotos = 89;
			nuevoProyecto._x = i*distanciaFotos;
			nuevoProyecto.marca.text = todoterrenos[i].attributes.marca;
			nuevoProyecto.imagen.thumb.imagename = todoterrenos[i].attributes.thumbnail;
			nuevoProyecto.imagen.thumb.imgBlank.loadMovie('imagenes/thumbs/'+todoterrenos[i].attributes.thumbnail);
			filaTodoterrenos._x = 512;
			filaTodoterrenos._y = 436;
		}
		
	} else {
		trace('Fallo en la carga');
	}
	// end if
};//end function

coches.load('coches.xml');


//Máscaras Filas
var mascara_filaFamiliares:MovieClip = this.createEmptyMovieClip("mascara_filaFamiliares", this.getNextHighestDepth());
with (mascara_filaFamiliares) {
	_x = 329;
	_y = 8;
	beginFill(0x00000, 100);
	moveTo(0, 0);
	lineTo(519, 0);
	lineTo(519, 98);
	lineTo(0, 98);
	lineTo(0, 0);
}
filaFamiliares.setMask(mascara_filaFamiliares);

var mascara_filaDeportivos:MovieClip = this.createEmptyMovieClip("mascara_filaDeportivos", this.getNextHighestDepth());
with (mascara_filaDeportivos) {
	_x = 329;
	_y = 106;
	beginFill(0x00000, 100);
	moveTo(0, 0);
	lineTo(519, 0);
	lineTo(519, 98);
	lineTo(0, 98);
	lineTo(0, 0);
}
filaDeportivos.setMask(mascara_filaDeportivos);

var mascara_filaBerlinas:MovieClip = this.createEmptyMovieClip("mascara_filaBerlinas", this.getNextHighestDepth());
with (mascara_filaBerlinas) {
	_x = 329;
	_y = 207;
	beginFill(0x00000, 100);
	moveTo(0, 0);
	lineTo(519, 0);
	lineTo(519, 98);
	lineTo(0, 98);
	lineTo(0, 0);
}
filaBerlinas.setMask(mascara_filaBerlinas);

var mascara_filaCompactos:MovieClip = this.createEmptyMovieClip("mascara_filaCompactos", this.getNextHighestDepth());
with (mascara_filaCompactos) {
	_x = 329;
	_y = 302;
	beginFill(0x00000, 100);
	moveTo(0, 0);
	lineTo(519, 0);
	lineTo(519, 98);
	lineTo(0, 98);
	lineTo(0, 0);
}
filaCompactos.setMask(mascara_filaCompactos);

var mascara_filaTodoterrenos:MovieClip = this.createEmptyMovieClip("mascara_filaTodoterrenos", this.getNextHighestDepth());
with (mascara_filaTodoterrenos) {
	_x = 329;
	_y = 401;
	beginFill(0x00000, 100);
	moveTo(0, 0);
	lineTo(519, 0);
	lineTo(519, 98);
	lineTo(0, 98);
	lineTo(0, 0);
}
filaTodoterrenos.setMask(mascara_filaTodoterrenos);
Dejo un enlace con el .fla y los archivos necesarios (imagenes, xml, etc..) por si alguien quiere ver la galería y me ayuda a resolver el problema. La galería está muy chula y si la acabo la voy a colgar como tutorial... Amm, en el archivo para bajar hay un tambien un componente wapisimo para hacer scrolls dinamicos con easing d lo que sea solo con arrastrar al clip q kieres scrolear. Es necesario para exportar la pelicula y que funcionen los scrolls.

Bien, pues eso, una ayudita por favor, que esto lo llevo atrancado un tiempo. Que podría hacer para q se carguen los detalles de cada coche en el MC: ("Ficha_Detalles"). Como hacer que flash sepa que nodo del xml debe leer para cada coche y se carguen por ejemplo los datos del Ferrari? Como habreis visto se genera un boton sobre cada coche.


Aquí está toda la galería para descargar [1,3mb](solo tiene unos pocos coches para probar)
http://www.mytempdir.com/1338487


Muchas Gracias

Última edición por Jowy; 25/05/2007 a las 22:40
  #4 (permalink)  
Antiguo 27/05/2007, 18:24
Avatar de Jowy  
Fecha de Ingreso: febrero-2007
Ubicación: En la red
Mensajes: 232
Antigüedad: 10 años, 9 meses
Puntos: 0
Re: Flash + XML

Nadie me puede ayudar? :(
  #5 (permalink)  
Antiguo 28/05/2007, 09:05
Avatar de Jowy  
Fecha de Ingreso: febrero-2007
Ubicación: En la red
Mensajes: 232
Antigüedad: 10 años, 9 meses
Puntos: 0
Re: Flash + XML

---------------xd

Última edición por Jowy; 28/05/2007 a las 17:57
  #6 (permalink)  
Antiguo 28/05/2007, 09:11
 
Fecha de Ingreso: abril-2005
Mensajes: 450
Antigüedad: 12 años, 7 meses
Puntos: 0
Re: Flash + XML

Creo que el siguiente enlace te puede ayudar:
http://www.after-hours.org/foro/view...mente+nodo+xml

Espero que te guie, un saludo y suerte.
  #7 (permalink)  
Antiguo 28/05/2007, 17:58
Avatar de Jowy  
Fecha de Ingreso: febrero-2007
Ubicación: En la red
Mensajes: 232
Antigüedad: 10 años, 9 meses
Puntos: 0
Re: Flash + XML

Gracias Sergio, enlace me ha sido muuuuuuuuuuuy util

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 00:16.