Comunidad de diseño web y desarrollo en internet online

problema para duplicar contenedor

Citar            
MensajeEscrito el 29 Oct 2010 06:50 pm
Hola a todos. Tengo un xml con la rutas de las imagenes que quiero cargar de manera aleatoria en el escenario. Este es el codigo.. lo que sucede es que solo estoy viendo la ultima imagen. Calculo que lo que esta pasando es que se esta cargando todo en el mismo contenedor, se estan pisando unas a otras.. yo quisiera que todo el escenario se llene de imagenes como si tirara un maso de cartas sobre la mesa, se entiende?? Aqui esta mi humilde codigo SALUDOS Y GRACIAS!!

Código ActionScript :

stop();
//inicializo objeto xml con el contenido de la galeria
var imagenes_xml:XML = new XML();
imagenes_xml.ignoreWhite = true;
imagenes_xml.load("imagenes.xml");

//compruebo la carga exitosa
imagenes_xml.onLoad = function(exito) {
   if (exito) {
      principal();
   } else {
      caja.text = "error";
   }
};

function principal() {
   //almaceno las las rutas, nombre y duraccion de c/u en arrays
   direcciones = new Array();
   nombre = new Array();
   duraciones = new Array();
   primer_nodo = imagenes_xml.childNodes;
   nodo_galeria = primer_nodo[0].childNodes;

   for (var j = 0; j<nodo_galeria.length; j++) {
      direcciones[j] = nodo_galeria[j].attributes.direccion;
      nombre[j] = nodo_galeria[j].attributes.vinculo;
      duraciones[j] = nodo_galeria[j].attributes.duracion;
   }

   for (var i = 0; i<direcciones.length; i++) {

      posicion_x = Math.random()*430;
      posicion_y = Math.random()*58;

      this.createEmptyMovieClip("contenedor",this.getNextHighestDepth());

      contenedor._x = posicion_x;
      contenedor._y = posicion_y;

      contenedor.loadMovie(direcciones[i]);
   }
}

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

chrome
Citar            
MensajeEscrito el 29 Oct 2010 07:53 pm
Le estás dando a todos el mismo nombre de instancia, peurba cambiando esta línea

var contenedor = this.createEmptyMovieClip("contenedor"+i,this.getNextHighestDepth());

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 2010 07:59 pm
capo!!

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

chrome
Citar            
MensajeEscrito el 01 Nov 2010 07:35 pm
Hola Jorge! Gracias por responder a todos.. sigo con dudas.. Por lo que me dice el trace, a pesar de almacenar los contenedores en un array, el this.getNextHighestDepth no esta funcionando porque siempre es 0. El Tween si funciona. Mil Grax! Mi puesto de laburo está juego aqui :D

Dejo el code here:

Código ActionScript :

stop();

import mx.transitions.Tween;
import mx.transitions.easing.*;

//inicializo objeto xml con el contenido de la galeria
var imagenes_xml:XML = new XML();
imagenes_xml.ignoreWhite = true;
imagenes_xml.load("imagenes.xml");

//compruebo la carga exitosa
imagenes_xml.onLoad = function(exito) {
   if (exito) {
      principal();
   } else {
      caja.text = "error";
   }
};

function principal() {

   //creo los arrays que voy a necesitar
   var direcciones = new Array();
   var nombre = new Array();
   var primer_nodo = imagenes_xml.childNodes;
   var nodo_galeria = primer_nodo[0].childNodes;

   //almaceno las imagenes
   for (var i = 0; i < nodo_galeria.length; i++) {
      direcciones[i] = nodo_galeria[i].attributes.direccion;
      nombre[i] = nodo_galeria[i].attributes.nombre;
   }

   //creo los contenedores para mostrar las imagenes y los almaceno en un array 
   //para manipular la posicion y velicidad
   var contenedores = new Array();

   for (var j = 0; j < direcciones.length; j++) {
      contenedores[j] = this.createEmptyMovieClip("contenedorImagen"+j, this.getNextHighestDepth());
      contenedores[j]._y = 150;
      contenedores[j]._x = 875;

      contenedores[j].loadMovie(direcciones[j]);
      
      var miTween:Tween = new Tween(contenedores[j], "_x", Back.easeOut, contenedores[j]._x, -120, 4, true);

   }


   //elijo una imagen al azar
   btn.onRelease = function() {
      var numero = Math.round((Math.random()*(direcciones.length-0))+0);
      trace(contenedores);

   };



   //fin de function principal
}


y el trace:

_level0.contenedorImagen0,
_level0.contenedorImagen1,
_level0.contenedorImagen2,
_level0.contenedorImagen3,
_level0.contenedorImagen4,
_level0.contenedorImagen5,
_level0.contenedorImagen6

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

chrome
Citar            
MensajeEscrito el 01 Nov 2010 07:50 pm
El trace saca todo el contenido del array, si todos fueran al mismo nivel, uno reemplazaría al otro ... ¿estás seguro que es eso? ¿Por que no trazas la profundidad?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 01 Nov 2010 08:23 pm
CIerto, estaba posicionando una encima de la otra, ahora el trace dice:

trace("Imagen nº " + j +" nivel " +contenedores[j].getDepth());

Imagen nº 0 nivel 9877
Imagen nº 1 nivel 9878
Imagen nº 2 nivel 9879
Imagen nº 3 nivel 9880
Imagen nº 4 nivel 9881
Imagen nº 5 nivel 9882
Imagen nº 6 nivel 9883

Y si quisiera dar un retardo a las img para que el Tween sea de a una? Como hago?

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

chrome
Citar            
MensajeEscrito el 01 Nov 2010 08:56 pm
En vez de usar el Tween tradicional, usa alguna de las librerías de Tween, por ejemplo TweenLite, que te dan bastantes mas opciones, entre ellas un delay antes de largar la animación

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 02 Nov 2010 01:04 pm
ejejejej se ve que la tenes clara y sos bueno... me haces pensar!!! me gusta!

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

chrome
Citar            
MensajeEscrito el 02 Nov 2010 02:11 pm

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 02 Nov 2010 07:03 pm
bien el Tweenlite no lo conocia.. funciona casi todo solo habria que empezar a optimizar... El único problema ahora es que no logro darle con las coordenadas _y de destino de los contenedores.. se juntan en un punto al final del tween, no mantienen distancia como en la posición inicial.

se me complico mal..o tendre que descansar, una ayudita mas??
aquí el source si tenes tiempo
Grax!

http://www.dafing.com/sorteoFotografico.rar

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

chrome
Citar            
MensajeEscrito el 02 Nov 2010 07:06 pm
La idea es que dentro del loop for le vayas restando al destino un offset que se incrementa, o al revés, depende de como quieras ordenarlo, si le das el mismo destino a todos seguro se van a apilar

Jorge

PD: No leo código, me pierdo con mas de 10 líneas, prefiero que me lo expliquen

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 03 Nov 2010 06:50 pm
bien jorge! no me queda claro como manejar el tween para mover cada posicion de mi array en forma individual.
(En este caso mis contenedores.)

Estoy haciendo un for(i; ...){} y dentro el Tweelite:
TweenLite.to(contenedores[i] ...

(esta en el mismo cilo que uso para la creacion de los contenedores y hubicacion en el array)

se mueve todo el array en vez de cada posicion en forma individual..

slds!

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

chrome
Citar            
MensajeEscrito el 03 Nov 2010 06:55 pm
Pon el code que estas usando

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 04 Nov 2010 06:09 pm

Código ActionScript :

stop();

fscommand("allowscale",false)
fscommand("fullscreen",true)

import com.greensock.*;   
   
//inicializo objeto xml con el contenido de la galeria
var imagenes_xml = new XML();
imagenes_xml.ignoreWhite = true;
imagenes_xml.load("imagenes.xml");

//compruebo la carga exitosa
imagenes_xml.onLoad = function(exito) {
   if (exito) {
      principal();
   } else {
      caja.text = "error";
   }
};

function principal() {

   //creo los arrays que voy a necesitar
   var direcciones = new Array();
   var nombre = new Array();
   var primer_nodo = imagenes_xml.childNodes;
   var nodo_galeria = primer_nodo[0].childNodes;

   //almaceno las imagenes
   for (var i = 0; i<nodo_galeria.length; i++) {
      direcciones[i] = nodo_galeria[i].attributes.direccion;
      nombre[i] = nodo_galeria[i].attributes.nombre;
   }

   //creo los contenedores para mostrar las imagenes y los almaceno en un array para manipularlas
   var contenedores = new Array();
   var retardo = 0;
   
   
   for (var j = 0; j < direcciones.length; j++) {
      //creo el contenedor
      contenedores[j] = this.createEmptyMovieClip("contenedorImagen"+j, 
                                       this.getNextHighestDepth());
               
      //lo posiciono a 15px de distancia del ste.
      contenedores[j]._y = 250;
      contenedores[j]._x = j*135+800;  

      //cargo la imagen         
      contenedores[j].loadMovie(direcciones[j]);
      
      TweenLite.to(contenedores[j], 12, {_x:j*135-800});
   
   }

   //fin de function principal
}



gracias

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

chrome
Citar            
MensajeEscrito el 04 Nov 2010 06:51 pm
El destino es distinto para cada uno, si trazas:

trace(j*135-800)

Da valores distintos, entonces no puede ir al mismo lugar. Si quieres que salgan desfazados, puedes setear la propiedad delay en el objeto de inicialización

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

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