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

xml y actionscript

Estas en el tema de xml y actionscript en el foro de Flash y Actionscript en Foros del Web. Hola a todos/as, Estoy intentando hacer una galeria de fotos (primera incursion con actionscript), el menu esta hecho con unas miniaturas que quiero que al ...
  #1 (permalink)  
Antiguo 06/10/2009, 13:04
 
Fecha de Ingreso: octubre-2009
Mensajes: 17
Antigüedad: 15 años, 1 mes
Puntos: 0
xml y actionscript

Hola a todos/as,

Estoy intentando hacer una galeria de fotos (primera incursion con actionscript), el menu esta hecho con unas miniaturas que quiero que al pulsar te lleven a la coleccion correspondiente, las imagenes las saco de un xml.

Lo que no consigo es que al pulsar sobre la miniatura me lleve a la coleccion adecuada, tengo este codigo:
Código:
x = 40;
y = 200;
//--------------------------
_global.ancho = 238;
_global.alto = 159;

//--------------------------
_root.attachMovie("contenedor_mc","contenedor_mc",1);
contenedor_mc._x = 0;
contenedor_mc._y = 0;

_global.datos = new XML();
datos.ignoreWhite = true;
datos.onLoad = function() {
	for (var i = 0; i<datos.firstChild.childNodes.length; i++) {
		_root.cont = datos.firstChild.childNodes.length;
		ruta = datos.childNodes[0].childNodes[i].attributes.archivo;
		numId = datos.childNodes[0].childNodes[i].attributes.id;
		contenedor_mc.createEmptyMovieClip("imagen"+i, i+1000);
		eval("contenedor_mc.imagen"+i)._x = x;
		eval("contenedor_mc.imagen"+i)._y = y;
		eval("contenedor_mc.imagen"+i).loadMovie(ruta);
		x += ancho;
		
		//  columnas
					if (x >= ancho*4) {
						x = 40;
						y += alto;
						
					}
		// -- boton que lleve a la coleccion correspondiente

					
		contenedor_mc.onRelease= function(){
		_global.valor = datos.childNodes[0].childNodes[i].attributes.id;
		gotoAndStop(1);
		trace(valor);
		}

	}
};
	
datos.load("xml/imagenesIndex.xml");

gracias de antemano,

LaloP
  #2 (permalink)  
Antiguo 06/10/2009, 21:47
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: xml y actionscript

Hola
Si mal no recuerdo eso es porque te falta crearle una propiedad dinamica al movieclip (un id por ej que seria el valor de i), y luego en el onpress usas ese id para filtrar el xml
Si embargo, yo lo he hecho con duplicateMovieClip y no con createEmptyMovieClip, prueba a cambiarlo a duplicateMovieClip y en esa variable que guardes el duplicateMovieClip es donde le creas un id asi por ej
mc.id = i;
y luego en el onPress cambias la i por mc.id
Suerte
saludos
  #3 (permalink)  
Antiguo 08/10/2009, 04:32
 
Fecha de Ingreso: octubre-2009
Mensajes: 17
Antigüedad: 15 años, 1 mes
Puntos: 0
Exclamación Respuesta: xml y actionscript

He intentado hacer lo que me dices pero pulse sobre la imagen que pulse me devuelve siempre el id del ultimo nodo, dejo el codigo cambiado por si me podeis echar una mano,

Gracie mile!

Código:
x = 40;
y = 200;
//--------------------------
_global.ancho = 238; //Ancho de cada imagen
_global.alto = 159;

//--------------------------
_root.attachMovie("contenedor_mc","contenedor_mc",1);
contenedor_mc._x = 0;
contenedor_mc._y = 0;

//----------------------------
System.useCodepage = true;
_global.datos = new XML();
datos.ignoreWhite = true;
datos.onLoad = function() {
	for (var i = 0; i<datos.firstChild.childNodes.length; i++) {
		_root.cont = datos.firstChild.childNodes.length;
		ruta = datos.childNodes[0].childNodes[i].attributes.archivo;
		numId = i;
		contenedor_mc.createEmptyMovieClip("imagen"+i, i+1000);
		eval("contenedor_mc.imagen"+i)._x = x;
		eval("contenedor_mc.imagen"+i)._y = y;
		eval("contenedor_mc.imagen"+i).loadMovie(ruta);
		x += ancho;
		
		// -- control de número de columnas
					if (x >= ancho*4) {
						x = 40;
						y += alto;
						
					}
		// -- cada imagen se hace boton y coje su id y la pasa como variable
		// -- para que se vea luego la galeria correspondiente
					
		contenedor_mc.onRelease= function(){
		_global.valor = datos.childNodes[0].childNodes[numId];
		gotoAndStop(1);
		trace(valor);
		}

	}
};
	
datos.load("xml/imagenesIndex.xml");
  #4 (permalink)  
Antiguo 08/10/2009, 15:14
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: xml y actionscript

Hola
Bueno, eso es porque estas reemplazando el valor de numId cada vez que haces el ciclo, y por ende siempre el valor que le queda es el último

Revisate este ej para que te des una idea

Código as:
Ver original
  1. for(var i = 0; i < 2; i++){
  2. var container:MovieClip = this.createEmptyMovieClip("container" + i, this.getNextHighestDepth());
  3. container._x = 20 * i;
  4. container._y = 20 * i;
  5. container.id = i;
  6. var label:TextField = container.createTextField("label", 1, 0, 0, 150, 20);
  7. label.text = "Hello World" + i;
  8. container.onPress = function (){
  9. trace("PRESS EN ID " + this.id);
  10. }
  11. }
saludos
  #5 (permalink)  
Antiguo 09/10/2009, 17:55
 
Fecha de Ingreso: octubre-2009
Mensajes: 17
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: xml y actionscript

Hola otra vez, te agradezco tus respuestas, estoy aprendiendo bastante dandole vueltas a todo esto.
Entiendo lo de que siempre me devuelva el ultimo id porque se reemplaza el valor, creo que tambien entiendo mas o menos el funcionamiento del codigo que me has mostrado, pero no consigo hacer lo mismo con el mio.

Lo ultimo que he intentado a sido esto:

Código actionscript:
Ver original
  1. contenedor_mc.createEmptyMovieClip("imagen"+i, i+1000);
  2.         eval("contenedor_mc.imagen"+i)._x = x;
  3.         eval("contenedor_mc.imagen"+i)._y = y;
  4.         eval("contenedor_mc.imagen"+i).loadMovie(ruta);
  5.         x += ancho;
  6.         contenedor_mc.id = i;
  7.  
  8.         contenedor_mc.onRelease= function(){
  9.         trace(this.id);
  10.         }

imagino que no me funciona porque yo creo el MC donde va la imagen con esto y asi no asocia el this a contenedor_mc,

Código actionscript:
Ver original
  1. contenedor_mc.createEmptyMovieClip("imagen"+i, i+1000);

y en el ejemplo lo hace asi y asocia el MC al this. para poder usarlo luego , puede ser¿? no lo veo claro...

Código actionscript:
Ver original
  1. var container:MovieClip = this.createEmptyMovieClip("container" + i, this.getNextHighestDepth());

He intentado hacerlo de esta manera pero no me carga las imagenes.
Le he dado bastantes vueltas al codigo y no consigo solucionarlo, si pudierais explicarme un poco el ejemplo por favor.

Gracias,

salut! LaloP
  #6 (permalink)  
Antiguo 09/10/2009, 20:39
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: xml y actionscript

Hola
Pues en efecto es como tu dices, como yo lo veo, tu estas poniendole el evento al padre de las imagenes (contenedor_mc, y pues como el solo se crea una vez (y dentro le creas los hijos) por eso el trace siempre te muestra el mismo valor

Ahora, paso a explicarte mi codigo
De la linea 1 al 5, bueno, un for para crear cuantos quiera, y uso una
variable dinamica (container) para crear movieclips vacios, y les pongo sus
coordenadas y le asigno un id
Luego creo un textfield (no necesario, solo para ej) y le asigno un texto,
y finalmente, a este mismo mc dinamico le asigno un evento onpress
Como todo lo hago con esta variable dinamica, no hay inconveniente, no
tengo lo tuyo que es a un mc ya creado en la libreria le añado mc vacios
(o bueno, asi entiendo que lo estas haciendo)
espero le des solución a lo tuyo entonces
saludos
  #7 (permalink)  
Antiguo 11/10/2009, 05:24
 
Fecha de Ingreso: octubre-2009
Mensajes: 17
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: xml y actionscript

Hola de nuevo,

Esto es lo que voy avanzando, pero aun asi no lo consigo, si alguien le puede echar un vistazo por favor:

Con este codigo consigo que se vean las imagenes y que funcionen los botones, pero me devuelve un id undefined...

Código actionscript:
Ver original
  1. var caja:MovieClip = contenedor_mc.createEmptyMovieClip("imagen"+i, i+1000);
  2.         caja.id = i;
  3.         //contenedor_mc.createEmptyMovieClip("imagen"+i, i+1000);
  4.         caja._x = x;
  5.         caja._y = y;
  6.         caja.loadMovie(ruta);
  7.         x += ancho;
  8.         //trace (caja);
  9.        
  10.         contenedor_mc.onRelease= function(){
  11.         trace(this.id);
  12.         }

pero si hago esto como en el ejemplo deja de funcionar y no me muestra imagenes:

Código actionscript:
Ver original
  1. var caja:MovieClip = this.createEmptyMovieClip("caja"+i, i+1000);
  2.         caja.id = i;
  3.        
  4.         caja._x = x;
  5.         caja._y = y;
  6.         caja.loadMovie(ruta);
  7.         x += ancho;
  8.         //trace (caja);
  9.        
  10.         caja.onRelease= function(){
  11.         trace(this.id);
  12.         }

Si me pudierais decir en donde me equivoco para entender porque no me funciona.

Gracias, LaloP

Última edición por lalopalos; 11/10/2009 a las 05:51
  #8 (permalink)  
Antiguo 11/10/2009, 11:15
 
Fecha de Ingreso: octubre-2009
Mensajes: 17
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: xml y actionscript

He recontruido el codigo pero de esta manera no consigo que carguen las imagenes, que hago mal?!?! gracias

Código actionscript:
Ver original
  1. x = 40;
  2. y = 200;
  3. //--------------------------
  4. _global.ancho = 238; //Ancho imagen
  5. _global.alto = 159;
  6.  
  7. //--------------------------
  8. contenedor_mc._x = 0;
  9. contenedor_mc._y = 0;
  10.  
  11. //----------------------------
  12. System.useCodepage = true;
  13. _global.datos = new XML();
  14. datos.ignoreWhite = true;
  15. datos.onLoad = function() {
  16.     for (var i = 0; i<datos.firstChild.childNodes.length; i++) {
  17.         _root.cont = datos.firstChild.childNodes.length;
  18.         ruta = datos.childNodes[0].childNodes[i].attributes.archivo;
  19.         ids = datos.childNodes[0].childNodes[i].attributes.id;
  20.        
  21.         var contenedor_mc:MovieClip = this.createEmptyMovieClip("contenedor_mc", this.getNextHighestDepth());
  22.        
  23.         var imagen:MovieClip = contenedor_mc.createEmptyMovieClip("imagen"+i, contenedor_mc.getNextHighestDepth());
  24.         imagen.loadMovie(ruta);
  25.         contenedor_mc._x = x;
  26.         contenedor_mc._y = y;
  27.         x += ancho;
  28.        
  29.         contenedor_mc.onPress = function (){
  30.         trace("PRESS EN ID " + ids);
  31.         }
  32.                
  33.         // control del número de columnas
  34.                     if (x >= ancho*4) {
  35.                         x = 40;
  36.                         y += alto;
  37.                        
  38.                     }
  39.        
  40.     }
  41.  
  42. };
  43.    
  44. datos.load("xml/imagenesIndex.xml");

Un saludo!
  #9 (permalink)  
Antiguo 21/10/2009, 11:21
 
Fecha de Ingreso: octubre-2009
Mensajes: 17
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: xml y actionscript

Hola buenas, continue con el proyecto y ahora he vuelto a este asunto y sigue sin salirme.

Por lo que he ido aprendiendo creo que la mejor manera es la de cargar las imagenes dentro de un mc y no dos como antes, pero en este caso no consigo que funcione el onPress y no entiendo porque...

Código actionscript:
Ver original
  1. datos.onLoad = function() {
  2.  
  3.     for (var i = 0; i<datos.firstChild.childNodes.length; i++) {
  4.        
  5.         ruta = datos.firstChild.childNodes[i].attributes.archivo;
  6.        
  7.         _root.createEmptyMovieClip("imagen"+i, i+100);
  8.         imagen = _root["imagen"+i];
  9.  
  10.         imagen._x = x;
  11.         imagen._y = y;
  12.         imagen.loadMovie(ruta);
  13.         imagen.id = i;
  14.         x += ancho;
  15.  
  16.         // Control de número de columnas
  17.  
  18.         if (x>=ancho*4) {
  19.             x = 40;
  20.             y += alto;
  21.         }
  22.     }
  23.    
  24.  
  25. };
  26.         // Btn que deberia devolverme el id de cada imagen
  27.  
  28.         imagen.onPress = function() {
  29.         _global.a = (this.id);
  30.         gotoAndStop("scroll_artworks");
  31.         trace(a);
  32.         };
  33.  
  34. datos.load("xml/artwork.xml");

No se que mas hacer, he probado muchas cosas, un empujoncito por favor...

Gracias de antemano,

LaloP
  #10 (permalink)  
Antiguo 22/10/2009, 12:12
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: xml y actionscript

Hola
Porque no pones el onPress en el for?
prueba eso y nos comentas
saludos
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 17:15.