Comunidad de diseño web y desarrollo en internet online

Creación dinamica de Loader

Citar            
MensajeEscrito el 18 Jun 2008 09:05 am
Hola a tod@s!!

El problema es el siguiente, estoy realizando una galeria de imagenes, para la cual quiero leer el nº de imagenes que existen en la BBDD y crear tantos componentes loader como hagan falta.
Siguiendo la ayuda de Flash y varios hilos del foro, he conseguido crear uno mediante codigo, pero al intentar crear varios, no me funciona, es decir, no los crea.
El codigo es el siguiente:

Código :

for(n=0;n<3;n++)
   {
      for(m=0;m<3;m++)
         {
            attachMovie("Loader", this["carga"+cont], getNextHigestDepth());
            this["carga"+cont]._x = posx;this["carga"+cont]._y = posy;
            this["carga"+cont]._width = 100;this["carga"+cont]._height = 100;
            this["carga"+cont].contentPath = "Imagenes/Foto1.jpg";
            this["carga"+cont].autoLoad = true;
            cont++;
            posx += 120;
         }
      posx = 0;
      posy += 120;
   }




He puesto un componente Loader en la biblioteca como se explica en uno de los hilos y el la ayuda de Flash.

Alguien sabe que puede estar ocurriendo???
Muchas gracias de antemano.

Editado por eldervaz

Por _alvaro

12 de clabLevel



 

firefox
Citar            
MensajeEscrito el 18 Jun 2008 10:00 am
Primera pregunta: ¿realmente los crea?

Agrega trace(this["carga"+cont]) a ver que sale

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 18 Jun 2008 10:11 am
Mmmm...
Agregando esa linea, trace devuelve "undefined".
Y contestando a tu pregunta, no, no los crea. Si lo hago sin usar this["carga"+cont] si que funciona, pero claro, no me sirve porque necesito crear varios.

Por _alvaro

12 de clabLevel



 

firefox
Citar            
MensajeEscrito el 18 Jun 2008 10:50 am
que tonto, claro, es que por acá es muy temprano ;)
Esta línea es:

attachMovie("Loader", "carga"+cont, getNextHigestDepth());

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 18 Jun 2008 11:08 am
Que raro.. tu solución funciona, crea el Loader, pero no se muestra nada... :(.
El código queda de esta manera:

Código :

for(n=0;n<1;n++)
   {
      for(m=0;m<1;m++)
         {
            this.attachMovie("Loader", "carga"+cont, getNextHighestDepth());
            this["carga"+cont]._x = posx;this["carga"+cont]._y = posy;
            this["carga"+cont]._width = 100;this["carga"+cont]._height = 100;
            this["carga"+cont].contentPath = "Imagenes/Foto1.jpg";
            this["carga"+cont].autoLoad = true;
            //cont+=1;
            trace(cont);
            posx += 120;
            trace(this["carga"+cont].contentPath);
         }
      posx = 0;
      posy += 120;
   }


He anulado el autoincremento de la variable cont, porque si lo habilito, no me crea los Loader... cosa muy rara.
Por que puede ser??

Por _alvaro

12 de clabLevel



 

firefox
Citar            
MensajeEscrito el 18 Jun 2008 11:14 am
Usualmente los componentes necesitan un mínimo tiempo de inicialización, puede que se esté perdiendo el contentPath. Yo lo haría con createEmptyMovieClip y una carga normal en ese contenedor

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 18 Jun 2008 11:27 am
Ocurre lo mismo... en cuanto incremento la variable cont para que de los nuevos ID a los MC no me crea ninguno.... si no la incremento funciona perfectamente, aunque evidentemente solo me crea 1.
Que cosas mas raras ocurren esta mañana.... :(

Por _alvaro

12 de clabLevel



 

firefox
Citar            
MensajeEscrito el 18 Jun 2008 11:38 am
Pon como ha quedado el código

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 18 Jun 2008 11:44 am
El código queda de esta manera:

Código :

for(n=0;n<3;n++)
   {
      for(m=0;m<3;m++)
         {
            
            this.createEmptyMovieClip("carga"+cont, this.getNextHighestDepth());
            this["carga"+cont]._x = posx;this["carga"+cont]._y = posy;
            //cont++;
            trace(this["carga"+cont]);
            posx += 120;
            this["carga"+cont].loadMovie("Imagenes/Pe/Foto"+cont+".jpg");
         }
      posx = 0;
      posy += 120;
   }


Muchas gracias de antemano jejeje, sobre todo por tu paciencia solisarg.
Es que llevo un par de meses aprendiendo AS2 y aun hay cosas que no piyo, en fin.... veremos que tal se da despues AS3 ;)

Por _alvaro

12 de clabLevel



 

firefox
Citar            
MensajeEscrito el 18 Jun 2008 12:28 pm
El método attachMovie devuelve una referencia que abrevia el código, evitando el lookup de la notación de arrays y ahorrando algunas milésimas de procesador. Pruébalo ahora así:

Código :

var posx:Number = 0
var posy:Number = 0
for (n=0; n<3; n++) {
   for (m=0; m<3; m++) {
      holder = this.createEmptyMovieClip("carga"+cont, this.getNextHighestDepth());
      holder._x = posx;
      holder._y = posy;      
      trace(holder);
      posx += 120;
      holder.loadMovie("Imagenes/Pe/Foto"+cont+".jpg");
      cont++;
   }
   posx = 0;
   posy += 120;
}


Y recuerda siempre darle formato a tu código

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 18 Jun 2008 02:53 pm
Muchisimas gracias solisarg!!!!!!! :D
La verdad es que ya me estaba volviendo loco xD.
Solo una pregunta mas.... en tu ejemplo "Holder" se asemeja al *Sender de C++??
Es que ahora necesito recoger el evento onRelease de cada una de las cajas por separado, y en C++ se puede crear un evento generico que en función del ID (*Sender) del objeto que lo lanza hace una cosa u otra.

Por _alvaro

12 de clabLevel



 

firefox
Citar            
MensajeEscrito el 18 Jun 2008 03:29 pm
Desconozco C++, pero si quieres ponerle un onRelease, tendrás que poner un contenedor interno porque sino el loadMovie se carga tu onRelease, algo así:

Código :

var posx:Number = 0
var posy:Number = 0
for (n=0; n<3; n++) {
   for (m=0; m<3; m++) {
      holder = this.createEmptyMovieClip("carga"+cont, this.getNextHighestDepth());
      img = holder.createEmptyMovieClip("container", 1);
      holder._x = posx;
      holder._y = posy;
      holder.nr = cont
      holder.onRelease = function(){
         trace("soy el nr "+this.cont)
      }
      posx += 120;
      img.loadMovie("Imagenes/Pe/Foto"+cont+".jpg");
      cont++;
   }
   posx = 0;
   posy += 120;
}


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 18 Jun 2008 03:35 pm
Muchisimas gracias!!!! :D
Sabia mas o menos que los tiros ivan por hay, pero desconocia que el "loadMovie" se cargara el evento... que curioso.
En fin, apuntare este ejemplo en mi libro de cabecera para no perderlo jejejeje. ;D

Por _alvaro

12 de clabLevel



 

firefox
Citar            
MensajeEscrito el 18 Jun 2008 03:36 pm
Muchisimas gracias!!!! :D
Sabia mas o menos que los tiros ivan por hay, pero desconocia que el "loadMovie" se cargara el evento... que curioso.
En fin, apuntare este ejemplo en mi libro de cabecera para no perderlo jejejeje. ;)

Por _alvaro

12 de clabLevel



 

firefox

 

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