Comunidad de diseño web y desarrollo en internet online

Múltiples preloaders dinámicos

Citar            
MensajeEscrito el 18 Sep 2007 06:06 pm
Ando queriendo precargar varias imágenes las cuales su url tomo de un xml. Con la clase Loader es como he encontrado que se carga, mas no he tenido éxito el querer hacer el preloader de cada una de las imágenes, sólo de la última imágen que cargo, más bien mi problema es poder saber en el listener cuál texto de progreso(o en dado caso barra de progreso ) actualizar.

Les pego el código que intento:

Código :

package{
   import flash.display.Loader;
   import flash.display.LoaderInfo;
   import flash.display.MovieClip;
   import flash.display.Sprite;      
   import flash.display.Bitmap;
   import flash.net.URLLoader;
   import flash.net.URLRequest;
   import flash.events.Event;
   import flash.events.ProgressEvent;
   import flash.events.EventDispatcher;  
   import flash.events.StatusEvent;  
   import flash.events.DataEvent;  
   import flash.text.TextField;
   import flash.text.TextFieldAutoSize;
   
   public class loaderMultiple extends Sprite{
      
      private var xmlImagenes:XML;
      private var numItems:int;
//      private var loader:Loader;
      private var progressOutput:TextField;
        private var arrLoader:Array;
      
      public function loaderMultiple(){
         xmlImagenes= <Imagenes>
            <imagen url="C:/Flash/Imagenes/imagen1.png" desc="Freddie el Bombazo" width="380" heigth="270"/>
            <imagen url="C:/Flash/Imagenes/imagen2.png" desc="Zguillez" width="380" heigth="270" />
            <imagen url="C:/Flash/Imagenes/imagen3.png" desc="XK con los rusos" width="380" heigth="270"/>
            <imagen url="C:/Flash/Imagenes/imagen4.png" desc="La banda del Conejo" width="380" heigth="270"/>
         </Imagenes> ;


         var i:int=0;

         arrLoader=new Array();
            for each(var xml:XML in xmlImagenes.imagen){
            i++;
//            var mc:MovieClip=new MovieClip();
               var loader:Loader=new Loader();                                    
            loader.name="loader" + i;

            var urlRequest:URLRequest=new URLRequest(unescape(xml.@url));            
            loader.load(urlRequest);
            loader.contentLoaderInfo.addEventListener(Event.INIT,initListener);
            loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,progressListener);                     
            createProgressIndicator(i);            
//                addChild(loader);
//             mc.addChild(loader.content);
         }
         

      }
      
      
      private function initListener(e:Event):void{
//          addChild(loader);
            var bmp:Bitmap=Bitmap(e.target.content);
         trace (bmp);
            addChild(bmp);         
//         trace(e.target);
//         trace("loader.name ----"+loaderAux.name);
      }
      
      private function progressListener(e:ProgressEvent):void{
      
          //Aquí el problema porque no sé cómo indicar cúal texto actualizar
//           trace("e.target =" +e.target);
//         var pText:TextField=TextField(getChildByName("progreso"+i));
//         pText.text="Cargando: "+ Math.floor(e.bytesLoaded/1024) + "/"+Math.floor(e.bytesTotal/1024) + " KB";
      }
      
      private function createProgressIndicator(i:int):void{
         progressOutput=new TextField();
         progressOutput.name="progreso"+i;
         progressOutput.autoSize=TextFieldAutoSize.LEFT;
         progressOutput.border=true;
         progressOutput.background=true;
         progressOutput.selectable=false;
         progressOutput.text="CARGANDO...";
         progressOutput.x=600;
         progressOutput.y=progressOutput.height*i;
         addChild(progressOutput);
      }
   }
}


Thanks ^^ .

Por Rafeo

650 de clabLevel

3 tutoriales
1 articulo

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 19 Sep 2007 02:39 am
La verdad es que yo cambiaría el planteamiento de tu clase...
Haria una clase con un loaderSimple, que cree su TextField y lo actualice, y otra clase loaderMultiple que lo que haga es leer el xml y generar varias instancias de la clase simple. Asi no tendrias problemas de este tipo.
Espero te sirva ;)

Por Zguillez

BOFH

10744 de clabLevel

85 tutoriales
17 articulos
3 ejemplos

Genero:Masculino   Bastard Operators From Hell Héroes Team Cristalab Editores

BCN

firefox
Citar            
MensajeEscrito el 19 Sep 2007 07:06 pm
Muchas gracias Zguillez, te hice caso y funcionó tal como lo esperaba :D.

Así me quedaron las clases:

LoaderMultiple.as

Código :

package{
   import LoaderSimple;
   import flash.display.Loader;
   import flash.display.LoaderInfo;
   import flash.display.MovieClip;
   import flash.display.Sprite;      
   import flash.display.Bitmap;
   import flash.net.URLLoader;
   import flash.net.URLRequest;
   import flash.events.Event;
   import flash.events.ProgressEvent;
   import flash.events.EventDispatcher;  
   import flash.events.StatusEvent;  
   import flash.events.DataEvent;  
   import flash.text.TextField;
   import flash.text.TextFieldAutoSize;
   
   public class loaderMultiple extends Sprite{
      
      private var xmlImagenes:XML;
      private var numItems:int;
      private var index:int;
      
      public function loaderMultiple(){
                  xmlImagenes= <Imagenes>
            <imagen url="C:/Flash/Imagenes/imagen1.png" desc="Freddie el Bombazo" width="50" heigth="50"/>

            <imagen url="C:/Flash/Imagenes/imagen2.png" desc="Zguillez" width="50" heigth="50" />

            <imagen url="C:/Flash/Imagenes/imagen3.png" desc="XK con los rusos" width="50" heigth="50"/>

            <imagen url="C:/Flash/Imagenes/imagen4.png" desc="La banda del Conejo" width="50" heigth="50"/>

         </Imagenes> ;


         var i:int=0;
            for each(var xml:XML in xmlImagenes.imagen){
            i++; index=i;
             var loader:LoaderSimple=new LoaderSimple(xml,i);
            addChild(loader);
         }
      }// fin loaderMultiple
      
   }
}


y LoaderSimple.as :

Código :

package{
   import flash.display.MovieClip;
    import flash.display.Loader;
    import flash.display.LoaderInfo;
    import flash.display.MovieClip;
    import flash.display.Sprite;      
    import flash.display.Bitmap;
    import flash.net.URLLoader;
    import flash.net.URLRequest;
    import flash.events.Event;
    import flash.events.ProgressEvent;
    import flash.events.EventDispatcher;  
    import flash.events.StatusEvent;  
    import flash.events.DataEvent;  
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
   
   public class LoaderSimple extends MovieClip{
      
         var textProgress:TextField;
         
      public function LoaderSimple(xml:XML,i:int){
             var loader:Loader=new Loader();                                    
          var urlRequest:URLRequest=new URLRequest(unescape(xml.@url));         
         loader.load(urlRequest);
         loader.contentLoaderInfo.addEventListener(Event.INIT,initListener);
         loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,progressListener);                     
         
            textProgress=new TextField();
         textProgress.name="progreso"+i;
         textProgress.autoSize=TextFieldAutoSize.LEFT;
         textProgress.border=true;
         textProgress.background=true;
         textProgress.selectable=false;
         textProgress.text="CARGANDO...";
         textProgress.x=600;
         textProgress.y=textProgress.height*i;
         addChild(textProgress);
         trace(textProgress.name);
      }
      
      private function initListener(e:Event):void{
            var bmp:Bitmap=Bitmap(e.target.content);
         trace(bmp);
            addChild(bmp);         
      }
      
      private function progressListener(e:ProgressEvent):void{
            trace("textProgress.name --" +textProgress.name + "textProgress.text= "+textProgress.text);
         textProgress.text="Cargando: "+ Math.floor(e.bytesLoaded/1024) + "/"+Math.floor(e.bytesTotal/1024) + " KB";
      }      
      
   }
}


Muchas gracias de nuevo y esperemos que le sirva a alguien más ;) .

Por Rafeo

650 de clabLevel

3 tutoriales
1 articulo

Genero:Masculino  

firefox

 

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