Comunidad de diseño web y desarrollo en internet online

problema con removeEventListener

Citar            
MensajeEscrito el 29 Ene 2009 09:01 pm
Este problema me está rompiendo la cabeza y la verdad ya no sé qué hacer, espero que puedan ayudarme.
Tengo un movieclip que uso como botón, y una clase externa con la cual le añado control e interactividad. En esta clase le añado los listeners, y las funciones over, up, down, etc. típicas de un botón. El problema es que al hacer click al botón quiero dejarlo inactivo, y para ello en la función down le quito los listeners, pero no resulta! cuando muevo el mouse sobre el botón a{un tiene las funciones over, up, etc a pesar que ya las he removido. ¿Porqué no se van las funciones si las he removido? Este es mas o menos el codigo:

Código :

package
{
   import flash.display.*;
   import flash.text.*;
   import flash.geom.ColorTransform;
   import flash.events.*;
   
   public class BtnCuadSelect extends MovieClip
   {
                  
      public function BtnCuadSelect():void
      {
         this.mouseChildren=false;
         this.buttonMode=true;
         init();                  
      }
      
      public function init():void
      {
         addEventListener(MouseEvent.MOUSE_OVER,over);
         addEventListener(MouseEvent.MOUSE_OUT ,up);
         addEventListener(MouseEvent.MOUSE_DOWN ,down);
      }
      
      private function over(evt:MouseEvent):void
      {
         //acciones...
      }
      
      private function up(evt:MouseEvent):void
      {
         //acciones...
      }
      
      private function down(evt:MouseEvent):void
      {
         removeEventListener(MouseEvent.MOUSE_OVER,over);
         removeEventListener(MouseEvent.MOUSE_OUT ,up);
         removeEventListener(MouseEvent.MOUSE_DOWN ,down);
         this.buttonMode=false;
      }
      
   }
} 

Puede alguien darme una idea de cuál es el problema, qué estoy haciendo mal? Gracias...

Por nazcaline

272 de clabLevel

3 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 30 Ene 2009 04:19 pm
por que lo que remueves es nada XD o le dices que remueva esos eventos del satage

Código :

package
{
   import flash.display.*;
   import flash.text.*;
   import flash.geom.ColorTransform;
   import flash.events.*;
   
   public class BtnCuadSelect extends MovieClip
   {
                  
      public function BtnCuadSelect():void
      {
         this.mouseChildren=false;
         this.buttonMode=true;
         init();                  
      }
      
      public function init():void
      {
         addEventListener(MouseEvent.MOUSE_OVER,over);
         addEventListener(MouseEvent.MOUSE_OUT ,up);
         addEventListener(MouseEvent.MOUSE_DOWN ,down);
      }
      
      private function over(evt:MouseEvent):void
      {
         //acciones...
      }
      
      private function up(evt:MouseEvent):void
      {
         //acciones...
      }
      
      private function down(evt:MouseEvent):void
      {
          evt.currentTarget.removeEventListener(MouseEvent.MOUSE_OVER,over);
         evt.currentTarget.removeEventListener(MouseEvent.MOUSE_OUT ,up);
         evt.currentTarget.removeEventListener(MouseEvent.MOUSE_DOWN ,down);
         this.buttonMode=false;
      }
      
   }
} 

Por Lynxcraft

33 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Ene 2009 06:17 pm
Pues nada de nada. Ya probé con currentTarget, con target, con .this, y nada. Aclaro que al primer clic SÍ funciona, todo normal, pero si hago UN CLIC MAS sobre el boton "inactivo", ¡¡las funciones regresan!! Porqué sucede esto, si se supone que ya no hay ningún listener escuchando las acciones, el boton debería estar totalmente "muerto"!
Alguna idea más , por favor? La verdad es bastante molesto...no entiendo qué puede estar pasando. :S

Por nazcaline

272 de clabLevel

3 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 30 Ene 2009 07:29 pm

Lynxcraft escribió:

por que lo que remueves es nada XD o le dices que remueva esos eventos del satage


Solo para aclarar la clase esta ligada al boton por tanto poner addEvent o removeEvent esta implicito que es sobre el "this" no sobre el "stage" y "this" hace alucion a su boton.

Por Angel Roberto

Claber

248 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Ene 2009 07:45 pm
Copie y pegue tu codigo tal cual y ami me funciono bien....el problema puede estar en la funcion init(); hay agregas los listeners y se debe ejecutar mas de una vez, prueba poniendo un trace para ver si se ejecuta mas de una vez,en algun momento reactivas ese boton?? puedes eliminar esa funcion init y agregar los listeners en el constructor.

Por Angel Roberto

Claber

248 de clabLevel



 

firefox

 

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