Comunidad de diseño web y desarrollo en internet online

Cargar lista dinamica de imagenes .jpg

Citar            
MensajeEscrito el 29 Abr 2009 09:17 am
Hola,

Estoy creando un clase que carga en el escenario las imagenes indicadas en una lista(Array), una al lado de la otra. El problema es que no las carga en el orden que estan en la lista.
Creo que el problema está en utilizar el loop for, ya que creo que salta a la siguiente iteración cuando aún no se ha cargado la imagen actual. Entiendo que habria que hacerlo mediante Eventos, pero no se como hacerlo. ¿Alguna sugerencia?

Muchas gracias.

Clase Main.as:

Código :

package 
{
   import flash.display.Sprite;
   import flash.events.Event;
   
   import ImageLoader;
   
   public class Main extends Sprite 
   {
      private var _imageFileNames:Array;
      
      private var _imageLoader:ImageLoader;
      
      private var _container:Sprite = new Sprite();
      private var _offsetX:Number = new Number();
      
      public function Main():void 
      {
         if (stage) init();
         else addEventListener(Event.ADDED_TO_STAGE, init);
      }
      
      private function init(e:Event = null):void 
      {
         removeEventListener(Event.ADDED_TO_STAGE, init);
         
         // entry point
         _imageFileNames = new Array("1.jpg", "2.jpg","3.jpg", "4.jpg","5.jpg","6.jpg");
                  
         for (var index:uint = 0; index < _imageFileNames.length; index++)
         {
            var imageLoader:ImageLoader = new ImageLoader(_imageFileNames[index]);
            imageLoader.addEventListener(ImageLoader.LOADED, imageLoaded);
         }
         
         addChild(_container);
                  
      }
      
      private function imageLoaded(e:Event):void
      {         
         var image:Sprite = new Sprite();
         
         image = e.target as Sprite;
         
         image.x = _offsetX;
         _offsetX += image.width;
         
         _container.addChild(image);
      }
   }
}


Clase ImageLoader:

Código :

package  
{
   import flash.display.Sprite;
   import flash.display.Loader;
   import flash.events.EventDispatcher;
   import flash.net.URLRequest;
   import flash.events.Event;
   
   public class ImageLoader extends Sprite 
   {   
      public static var LOADED:String = "loaded";
      
      private var _urlAsset:String;
      private var _image:Sprite;
      
      public function ImageLoader(asset:String):void 
      {
         _urlAsset = asset;
         
         if (asset != null)
         {
            iniLoad();
         }
      }
      
      private function iniLoad():void
      {
         _image = new Sprite();
         
         var loader:Loader = new Loader();
         var dispatcher:EventDispatcher = loader.contentLoaderInfo;
         
         loader.load(new URLRequest(_urlAsset));
         dispatcher.addEventListener(Event.INIT, registreContent);
         
         addChild(loader);         
      }
      
      private function registreContent(e:Event):void
      {
         _image = e.target.content as Sprite;
         dispatchEvent(new Event(ImageLoader.LOADED));
      }
   }
   
}

Por bendi

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Abr 2009 10:13 am
No tienes que usar un loop para instanciar todos tus loaders, mas bien usa una función que dispare la primera carga, en el onLoad la vuelves a llamar para que siga con la siguiente. Usa un contador para saber por cual foto vas

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.