Comunidad de diseño web y desarrollo en internet online

No entiendo porqué

Citar            
MensajeEscrito el 24 Oct 2006 06:10 pm
Hice un ejercicio sencillo para probar como mover de posición un mc mientras el mouse esté sobre de él, utilicé prototipos, verán el código más adelante.
El problema reside en los escuchadores, al crearlo no tengo ningún problema y funciona bien, pero al removerlo no puedo hacerlo utilizando el nombre del objeto, lo hice utilizando la matriz de escuchadores y funciono perfectamente, es ahí dónde no entiendo, toda la literatura y ayuda que encontré indica que al referirme al escuchador por su nombre, debe removerse correctamente.
Por favor revisen el código ¿Algo hice mal? o ¿Alguien a notado este problema anteriormente?
Por último comento que el ejercicio lo hice tanto en MX2004 pro y Flash 8, obteniendo los mismos resultados.

Código :

if( cargado == undefined){
mover = function(cual,cuanto){
   nvapos = this[cual]._x + cuanto;
   this[cual]._x = nvapos;
   trace(cual);
}
habilitar = function(nombre,control){
   var teclado:Object = new Object();
   teclado.onKeyDown = function() {
      tecla = Key.getCode();
      if ( tecla == 39){
         mover(nombre,10);
      }
      else if(tecla == 37){
         mover(nombre,-10);
      }
   }
   if(control == 0){
      Key.addListener(teclado);
      largo=Key._listeners;
      trace(largo);
   }
   else if(control == 1){
                                // Aqui es el problema si quiero usar el nombre de objeto no funciona, así
                                //como esta funciona perfectamente
      anular=Key.removeListener(largo[0]);
                                trace(control + "   "+ anular);
   }
    }
}
cargado = true;

MovieClip.prototype.onRollOver = function(){
   habilitar(this._name,0);
}
MovieClip.prototype.onRollOut = function(){
   habilitar(this._name,1);
   trace("mouse fuera");
}

stop();


Gracias de antemano, saludos.

Rafael

Por RafaelTol

33 de clabLevel



Genero:Masculino  

México

msie
Citar            
MensajeEscrito el 24 Oct 2006 10:10 pm
Es un problema de ambito de variables.
Define el objeto teclado fuera de la funcion:

Código :

if (cargado == undefined) {
   ............
   var teclado:Object = new Object();
   habilitar = function (nombre, control)   {
      ..........
      if (control == 0) {
         Key.addListener(teclado);
         ......
      } else if (control == 1) {
         anular = Key.removeListener(teclado);
         ......
      }
   };
}

Por Zguillez

BOFH

10744 de clabLevel

85 tutoriales
17 articulos
3 ejemplos

Genero:Masculino   Bastard Operators From Hell Héroes Team Cristalab Editores

BCN

firefox
Citar            
MensajeEscrito el 24 Oct 2006 10:20 pm
Muchas gracias, nunca pensé que fuera por ahí la solución.
Saludos.
Rafael

Por RafaelTol

33 de clabLevel



Genero:Masculino  

México

msie

 

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