Comunidad de diseño web y desarrollo en internet online

Problema con addChild y For

Citar            
MensajeEscrito el 30 Sep 2011 06:02 pm
Hola a todos, despues de varios intentos, no se porque me sucede esto. Ocurre que si añado la barra en el OPEN y el contenendorImag en el COMPLETE, solo me muestra el ultimo paso del for, osea la imagen 7, si los saco fuera como estan ahora, me muestra todos, hace bien el for, pero no puedo usar las precargas ... .

Como puedo solucionarlo para que me muestre todo dentro de el OPEN y el COMPLETE?

Saludos

Código :


var posArchivosY:Number = 0;
var contenedorArchivos:MovieClip = new MovieClip();
addChild(contenedorArchivos);

function cargaArchivos():void
{

   for (var j= 0; j<8; j++)
   {
      
      var barra:Sprite = new Sprite();
      barra.graphics.beginFill(0x333333);
      barra.graphics.drawRect(0,0,94,94);
      barra.graphics.endFill();

      // Creamos una nueva variable que será instancia de la clase URLRequest. Esta nueva variable será pasada al metodo load().;
      // Declaramos un nuevo "Loader". En Actionscript 3 un Loader crea un objeto o contenedor que nos servirá para cargar nuestras imágenes (jpg, gif, png).


      var llamarImagen:URLRequest = new URLRequest("noimagen" + j + ".png");
      var contenedorImag:Loader = new Loader();

      contenedorImag.name = "trabajo" + j;

      // Asignamos la carga al objeto llamado contenedorImag con "load"
      // Creamos dos "addEventListener", uno para ver el progreso de carga del archivo y el otro para verlo ya que esté cargado completamente. ;
      // El "eventListener" se le agrega a una propiedad llamada "contentLoaderInfo"

      contenedorImag.load(llamarImagen);
      contenedorImag.contentLoaderInfo.addEventListener(Event.OPEN, iniciaCarga);
      contenedorImag.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, estadoCarga);
      contenedorImag.contentLoaderInfo.addEventListener(Event.COMPLETE, imagenLista);

      // Después de esto es necesario hacer los llamados a cada uno de los eventListener:;

      contenedorArchivos.addChild(contenedorImag);
                contenedorArchivos.addChild(barra);
      contenedorImag.y = posArchivosY;
      barra.y = contenedorImag.y;
      posArchivosY = posArchivosY + 94;

      function iniciaCarga(e:Event)
      {
                       //Aqui deberia de ir el contenedorArchivos.addChild(barra);
      }
      function estadoCarga(e:ProgressEvent)
      {
         /*var bCargados = event.bytesLoaded;
         var bTotales = event.bytesTotal;
         var porcentaje = Math.round(100 * bLoad / bTot);*/
      }
      function imagenLista(e:Event)
      {
                       //Aqui deberia de ir el contenedorArchivos.addChild(contenedorImag);
      }


   }
}
cargaArchivos();

Por douglashall

14 de clabLevel



 

safari
Citar            
MensajeEscrito el 30 Sep 2011 08:02 pm
Parece que sobreescribes algo en el loop, probaste usando evt.target (que debería apuntar al loader que lo genera) en vez de usar la referencia contenedorImag?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 30 Sep 2011 10:44 pm
Tienes que ordenar un poco tus oraciones por que no se te entendió nada... en el comentario previo al código, fácil si nos dices que necesitas hacer te podemos ayudar.

SLds.

Por louiser

Claber

163 de clabLevel

2 tutoriales

Genero:Masculino  

ActionScript Developer

chrome
Citar            
MensajeEscrito el 30 Sep 2011 11:16 pm
mira no se si esto es lo que necesitas:

Código ActionScript :

var posY:Number = 0;
var contenedor:MovieClip = new MovieClip();

init();
function init():void {
   addChild(contenedor);
   //
   for (var i:Number = 0; i<8; i++) {
      var imagen:MovieClip = new MovieClip();
      imagen.name = "trabajo " + i;
      imagen.valor = i;
      imagen.y = posY;
      //
      creoBarra(imagen);
      cargarFoto(imagen);
      //
      posY += 94;
   }
}

function creoBarra(mc:MovieClip):void {
   var barra:Sprite = new Sprite();
   barra.graphics.beginFill(0x333333);
   barra.graphics.drawRect(0,0,94,94);
   barra.graphics.endFill();

   mc.addChild(barra);
}

function cargarFoto(mc:MovieClip):void {
   var request:URLRequest = new URLRequest();
   var loader:Loader = new Loader();

   request.url="foto"+mc.valor+".png";

   loader.load(request);
   loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,PROGRESS);
   loader.contentLoaderInfo.addEventListener(Event.COMPLETE,COMPLETE);
   loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ERROR);

   function PROGRESS(e:ProgressEvent):void {

   }

   function COMPLETE(e:Event):void {
      var foto:Sprite=Sprite(e.target.content);

      mc.addChild(foto);

      contenedor.addChild(mc);
   }

   function ERROR(e:IOErrorEvent):void {
      trace("no se pudo encontrar la imagen, pero igual agrega la barra");
      contenedor.addChild(mc);
   }
}

Por louiser

Claber

163 de clabLevel

2 tutoriales

Genero:Masculino  

ActionScript Developer

chrome

 

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