Comunidad de diseño web y desarrollo en internet online

cargador as3

Citar            
MensajeEscrito el 23 Oct 2009 04:12 pm
Hola estoy realizando la parte superior de un sitio todo en flash con as3.
estoy apenas empezandola, les cuento mi problema o duda.
en los 3 botones inferiores al hacer ROLL_OVER aparece un nuevo moviclip que esta oculto y con el una galeria de imagenes. esta galeria de imagenes se carga la primera vez que se hace ROLL_OVER sobre el boton, aca va mi pregunta yo cuando llamo al xml y lo parseo luego creo un for y me creando los loader y cargando con la direccion que puse en el xml ya dicho.
el problema que encuentro es que el cargador me aparece pero se me va antes de que carguen todas las imagenes.
yo nose si sera que las carga bien y hago el removeChild del cargador o que luego que las carga demora un poco en ir mostrandolas.

http://spedevigner.com/Sitios/Julio%20Doldan%20Ltda/home.html

ahi lo estoy alojando por si lo quieren ver ustedes mismos.

tambien dejo la clase en que creo la galeria:

Código ActionScript :

package Galeria{
   import flash.display.*;
   import flash.events.*;
   import flash.net.URLLoader;
   import flash.net.URLRequest;
   
   public class galeria extends MovieClip{
      private var xmlLoader:URLLoader;      
      private var xml:XML;               
      private var xmlList:XMLList;
      private var loader:Loader;   
      private var urlRequest:URLRequest;      
      private var imagenes:Array;
      private var pos:int = 0;
      private var cont:MovieClip = new MovieClip();
      private var mascara:_mascaraGaleria = new _mascaraGaleria();
      private var movimiento:Number = 0;
      private var friccion:Number;
      private var carg:_cargador = new _cargador();
      
      private var btn_sig:_btn_sig = new _btn_sig();
      private var btn_ant:_btn_ant = new _btn_ant();
      
      private var dir:String;
      //creamos un contenedor para las imagenes y una mascara para las mismas, adms los botones de der y izq
      public function galeria(xml:String):void{
         
         dir = xml;
         init();
      }
      //primero que nada parseamos el xml y tomamos la direcciones de las imagenes que hayamos puesto
      private function init():void{
         xmlLoader            = new URLLoader();    
         xmlLoader.addEventListener(Event.COMPLETE,parseXML);
         xmlLoader.load(new URLRequest(dir));
      }
      
      private function parseXML(event){

         xml                  = new XML(event.target.data);
         xml.ignoreWhitespace   = true;
         xmlList               = xml.img;
         
         for(var i = 0; i <= xmlList.length()-1; i++){
            imagenes = new Array();
            urlRequest = new URLRequest(xmlList[i]);
            loader  = new Loader();
            loader.load(urlRequest);
            loader.x = (220 * i);
            cont.addChild(loader);
            imagenes[i] = loader;
            if(i >= xmlList.length()-1){
               imagenes[xmlList.length()-1].contentLoaderInfo.addEventListener(Event.COMPLETE, loaderComplete);
               imagenes[xmlList.length()-1].contentLoaderInfo.addEventListener(Event.OPEN, loaderOpen);
            }
         }
      }
      
      private function loaderComplete(e:Event):void{            
         btn_sig.addEventListener(MouseEvent.ROLL_OVER, imgSig);
         btn_sig.addEventListener(MouseEvent.ROLL_OUT, imgSigOut);
         
         btn_ant.addEventListener(MouseEvent.ROLL_OVER, imgAnt);
         btn_ant.addEventListener(MouseEvent.ROLL_OUT, imgAntOut);
         addEventListener(Event.ENTER_FRAME, movImg);   
         removeChild(carg);
         carg = null;
         
         
         addChild(cont);
         cont.x = -(cont.width-700) /2;
         addChild(mascara);
         mascara.x = 40;
         cont.mask = mascara;
         
         addChild(btn_sig);
         btn_sig.y = 50;
         btn_sig.x = 720;
         addChild(btn_ant);
         btn_ant.y = 50;
      }
      
      private function loaderOpen(e:Event):void{      
         carg.x = 330;
         carg.y = 40;
         addChild(carg);
      }
      
      private function imgSig(e:MouseEvent):void{
         movimiento = - 10;
         friccion = 0;
      }
      
      private function imgAnt(e:MouseEvent):void{
         movimiento = + 10;
         friccion = 0;
      }
      
      private function imgSigOut(e:MouseEvent):void{
         friccion = .5;
      }
      
      private function imgAntOut(e:MouseEvent):void{
         friccion = -.5;
      }
      
      private function movImg(e:Event):void{
         cont.x += movimiento;
         if (movimiento != 0){
            movimiento += friccion;
         }else{
            friccion = 0;
         }
         if(cont.x >= 40){
            cont.x = 40;
         }else if(cont.x <= -(cont.width-740)){
            cont.x = -(cont.width-740);
         }
      }
   }
}
      

Por 22

79 de clabLevel



 

Uruguay

safari
Citar            
MensajeEscrito el 26 Oct 2009 01:45 am
Hola, como estás? no se si te sirve de algo pero yo para no tener problemas de carga uso siempre una clase Preload q me carga todas las imágenes y cuando termina lanza un evento q escucho desde la clase principal entonces no tenes problemas de ningún tipo de delay...

Por Pablokorku

60 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Oct 2009 08:35 am
Yo no veo el loader.

De todas formas, y si intentas cargar las imágenes una a una? Es decir, te haces una función cargarImagen(cual:Number), que te cargará una única imagen con sus respectivos listeners, y la vas llamando cada vez que se acabe de cargar la imagen, en el loaderComplete.

Así tendrás que en cuanto se acabe de cargar una imagen, empezarás por la siguiente.

A ver si te sirve :D

Por ur!

256 de clabLevel



 

Barcelona

chrome
Citar            
MensajeEscrito el 26 Oct 2009 03:34 pm
yo creo que el problema estaba aca:

Código ActionScript :

if(i >= xmlList.length()-1){ 
               imagenes[xmlList.length()-1].contentLoaderInfo.addEventListener(Event.COMPLETE, loaderComplete); 
               imagenes[xmlList.length()-1].contentLoaderInfo.addEventListener(Event.OPEN, loaderOpen); 
            } 


porque recien abria el cargador cuando empezaba a cargar la ultima imagen.
ahora lo que hice fue abrir el cargador con la primera imagen y luego el listener Complete con la ultima imagen.
pero igual no me funciona muy bien.

http://www.spedevigner.com/Sitios/Julio%20Doldan%20Ltda/home.html

ahi estoy probando el flash.
los tres botones inferiores abren distintas galerias.
yo lo que veo es que el cargador aparece al rato. nose si estara bien.

Por 22

79 de clabLevel



 

Uruguay

safari

 

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