Comunidad de diseño web y desarrollo en internet online

Clase que se auto elimina al terminar su funcion

Citar            
MensajeEscrito el 15 Mar 2010 03:58 pm
Hola a todos

estoy creando una clase para cargar objetos, la idea es crear un cargador y cuando termine de cargar el swf o jpg este objeto se elimine solo

Ejemplo

Código :

var carg:Cargador=new Cargador(MovieClip_contenedora, "foto.jpg")


cuando termine de cargar la foto la idea que el objeto carg se elimine solo

Ejemplo de mi clase..

Código :

        import flash.display.*;
   import flash.events.*;
   import flash.net.*;

   public class cargador extends Sprite {
      public function cargador(_destino:Object,_origen:String) {
         trace("Go-->"+_destino.name+" in-->"+_origen)
         var imageloader:Loader=new Loader();
         
         var u:URLRequest=new URLRequest(_origen);
         configureListeners(imageloader.contentLoaderInfo);
         imageloader.load(u);
         
         _destino.addChild(imageloader);
      }

      public function configureListeners(dispatcher:IEventDispatcher):void {
         dispatcher.addEventListener(Event.COMPLETE,completeHandler);
         dispatcher.addEventListener(ProgressEvent.PROGRESS,progreso);
         dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
      }
      public function  ioErrorHandler(event:IOErrorEvent) {
         trace("ioErrorHandler: " + event);

      }

      public function progreso(event:ProgressEvent):void {
         var bl:uint=event.bytesLoaded;
         var bt:uint=event.bytesTotal;
         var perc:int=Math.floor(bl/bt*100);
         //preload.gotoAndStop(perc);
      }
      public function completeHandler(e:Event):void {
         trace("Load Succes")
         delete this
            
      }

   }


no he podido hacer que cuando entre al completeHandler se destrulla el objeto creado para cargar la foto

espero que me puedan ayudar.

Por Kalakfactory

38 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 Mar 2010 05:18 pm
Supongo que será

Código ActionScript :

parent.removeChild(this)

Pero recuerda eliminar también todos los listeners. Para ello es cómodo que tu imageloader sea una variable de la clase. Vamos, la pones al principio

Código ActionScript :

public class cargador extends Sprite {
     private var imageloader:Loader //<--la declaramos aquí
     public class cargador extends Sprite {
         trace("Go-->"+_destino.name+" in-->"+_origen)
         imageloader=new Loader(); //<--aquí le damos valor
         .....
    }
    ....
    public function completeHandler(e:Event):void {
         trace("Load Succes")
         imageloader.removeEventListener(Event.COMPLETE,completeHandler);
         imageloader.removeEventListener(ProgressEvent.PROGRESS,progreso);
         imageloader.removeEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);

         parent.removeChild(this)  //<--esto ¿creo? debería eliminarlo del Stage
         delete this
      }
...

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Mar 2010 02:08 pm
no funciono....

la verdar nunca me ha funcionado el parent solo colocandolo como MovieClip(parent) aun asi esto no funciono

Por Kalakfactory

38 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Mar 2010 02:44 pm
Hola,
tienes que eliminarlo donde crees la instancia de tu objeto cargador. Como dice Eliseo2, primero tienes que eliminar todos los listener, después disparas un evento que será capturado por la instancia que crees, y ahí es donde debes eliminar el objeto (tienes que hacer el removeChild e igualarlo a null).

Por isidoro

Claber

498 de clabLevel

2 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 17 Mar 2010 02:53 pm

Kalakfactory escribió:

no funciono....
la verdar nunca me ha funcionado el parent solo colocandolo como MovieClip(parent) aun asi esto no funciono

Ejemplo sencillo de una clase que desaparece al pasar 1000 milisegundos (he usado un Timer)

Código ActionScript :

   public class Circulos extends Sprite 
   {
      public var timer:Timer = new Timer(1000,1);
      public function Circulos() 
      {
         if (stage) init();
         else addEventListener(Event.ADDED_TO_STAGE, init);
      }
      private function init(e:Event = null):void 
      {
         removeEventListener(Event.ADDED_TO_STAGE, init);
         graphics.beginFill(0xFFAAAA);
         graphics.drawCircle( 0,0,100);
         graphics.endFill();
         timer.addEventListener(TimerEvent.TIMER_COMPLETE, completeHandler);
         timer.start();
      }
      private function completeHandler(e:TimerEvent):void {
         timer.removeEventListener(TimerEvent.TIMER_COMPLETE, completeHandler);
         parent.removeChild(this);
                        delete this
      }
   }

En la película principal

Código ActionScript :

var circulo:Circulos = new Circulos();
addChild(circulo); 

NOTA1:Tengo la idea de que, si tu "preloader" está en el escenario no funcionará removeChild, pero no estoy muy seguro.
NOTA:parent es un "DisplayObjectContainer", con lo cual no hace falta ninguna conversión de cast

Por Eliseo2

710 de clabLevel



 

firefox

 

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