Comunidad de diseño web y desarrollo en internet online

Cargar imágen externa en un contendor

Citar            
MensajeEscrito el 28 Feb 2009 05:52 pm
Hola, estoy muy nuevo en esto de AS3, pero decidí empezar y ahora tengo mi primer problema, tengo mi clase principal, donde asigno los eventos para los botones en el escenario:
Clase "Main.as"

Código :

package 
{
   import flash.display.MovieClip;
   import flash.events.MouseEvent;
   import CargarImagen;
   
   public class Main extends MovieClip
   {
      public function Main():void
      {
         btCargaOriginal.addEventListener(MouseEvent.CLICK, cargarOriginal);
      }
      
      private function cargarOriginal(event:MouseEvent):void
      {
         var cargadorImagenes:CargarImagen = new CargarImagen("imagen.jpg");
      }
   }
}


Y tengo una clase para cargar externamente cualquier imágen con solo pasarle como parámetro el nombre del archivo:

Clase "CargarImagen.as"

Código :

package
{
   import flash.display.MovieClip;
   import flash.display.Sprite;
   import flash.net.URLRequest;
   import flash.display.Loader;
   import flash.events.*;
   
   public class CargarImagen extends MovieClip
   {
      //Variables iniciales
      private var url:String;

      //Constructor de la clase
      public function CargarImagen(sUrlPath:String):void
      {
         url = sUrlPath;
         var loader:Loader = new Loader();
         
         //Eventos
         loader.contentLoaderInfo.addEventListener(Event.COMPLETE, imagenCargada);
         loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, imagenError);
         loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, imagenProgreso);
         loader.load( new URLRequest(url) );
      }

      //Evento Complete
      private function imagenCargada(e:Event):void 
      {
         trace("completeHandler: " + e);
         Stage.addChild(e.target.content);
      }
   
      //Evento de error de carga
      private function imagenError(e:IOErrorEvent):void 
      {
         trace("ioErrorHandler: " + e);
      }
      
      //Evento de progreso
      private function imagenProgreso(e:ProgressEvent):void 
      {
         trace("progressHandler: bytesLoaded=" + e.bytesLoaded + " bytesTotal=" + e.bytesTotal);
      }
   }   
}


En primer lugar se que la clase cargar imagen está funcionando por que los trace de progreso funcionan, pero la imágen nunca aparece en el escenario; adicionalmente quisiera que me cargara esa imagen en un moviecip contenedor algo así como un mcHolder que también podría pasar compo parámetro de la clase de modo que pueda usar esa misma clase cada vez que quiera cargar una imagen en cualquier movieclip contendor.

es posible? gracias por sus aportes.

Por mobiltech

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 01 Mar 2009 10:06 am

Código :

package 
{
   import flash.display.MovieClip;
   import flash.events.MouseEvent;
   import CargarImagen;
   
   public class Main extends MovieClip
   {
      public function Main():void
      {
         btCargaOriginal.addEventListener(MouseEvent.CLICK, cargarOriginal);
      }
      
      private function cargarOriginal(event:MouseEvent):void
      {
         var cargadorImagenes:CargarImagen = new CargarImagen("imagen.jpg");
         addChild(cargadorImagenes)
      }
   }
}

te flata el addChild para poner mostrarlo en el escenario

Por Lynxcraft

33 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 Mar 2009 12:26 am
y en ese caso, cómo controlo al moviclip que muestra la barra de progreso de la carga desde esa clase?

Por mobiltech

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 Mar 2009 09:58 am
Realmente te faltan dos addChild, el addChild de "cargadorImagenes" y el addChild de "loader" DENTRO de tu Clase CargarImagen (en la misma clase constructora).
Respecto a la barra de progreso, tienes dos opciones
1.-PERTENCE a la misma clase CargarImagen. Así si tienes un MC cuyo nombre de instancia es "barra" puedes escribir dentro de las funcion imagenProgreso un

Código ActionScript :

barra.scaleX=e.bytesLoaded/e.bytesTotal

y un

Código ActionScript :

barra.visible=false

cuando acabe de cargar
2.-PERTENECE a la película principal.
En tal caso, o te refieres a ella como

Código ActionScript :

MovieClip(parent).barra

Que personalmente me parece mala idea
o bien dispachas un evento y los controlas desde la principal

Por Eliseo2

710 de clabLevel



 

firefox

 

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