Comunidad de diseño web y desarrollo en internet online

Enviar valor a un listener

Citar            
MensajeEscrito el 29 May 2007 03:45 pm
Hola!
Como le puedo enviar el valor de una variable a un listener, que escucha si ha presionado la tecla enter, por ejemplo?

En un for, voy duplicando unos botones que al presionar cada uno de ellos me deja escribir en un campo de texto. El último paso es controlar si presiona la tecla enter para saber que ya ha terminado. Por eso quiero recuperar el valor de “i” del for e enviarlo al listener. Como se concatena en el método de llamar al listener?

Código :

Key.addEventListener(ListenEnter);


Muchas gracias de antemano!

Por loisin

65 de clabLevel



Genero:Masculino  

Colonia-Castells

firefox
Citar            
MensajeEscrito el 29 May 2007 04:20 pm
Si mal no recuerdo, tienes que hacer un listener para el evento "presionar tecla" y dentro de ese evento preguntar si fue un enter.

Por Dientuki

Claber

2021 de clabLevel

11 tutoriales
1 articulo

Genero:Masculino   Héroes

Front-end Ninja

firefox
Citar            
MensajeEscrito el 30 May 2007 03:19 am
Creás la función, un objeto, asignás al objeto el listener (del teclado, del Mouse, del Stage, lo que sea) y listo. En la ayuda de Flash vas a encontrar ejemplos.

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

firefox
Citar            
MensajeEscrito el 30 May 2007 07:59 am
A ver, como siempre tengo problemas al plantear mis dudas.
Se como crear y llamar a un listener, esta no era mi pregunta. Lo que quiero es concatenarle el valor del for al listener para después recuperarlo.

Con este código de ejemplo quizás queden más claras mis intenciones:

Código :

for (i=0; i<4; i++){
   var Variable = eval("algo"+i);
   Variable.onPress=function(){
      CampoTexto.selectable=true;
      //aquí le quiero enviar el valor de "i" del for, pero nose como concatenarle
      Key.addEventListener(ListenEnter);//recuperaria valor (i)
   }
}

var ListenEnter:Object = new Object();
ListenEnter.onKeyDown = function() {
   if (Key.getCode() == Key.ENTER) {
      trace(valor);
   }
};


Para que quede más claro, si quiero enviar el valor de i (del for) a una función que está fuera, pues haríamos algo así:

Código :

Variable.i=i;
recupera(this.i);
function recupera(j){
   trace(j);
}

Obviamente le falta el for, pero creo que ya se sobreentiende.

Espero que se me entianda la duda ahora. Muchas gracias.

Por loisin

65 de clabLevel



Genero:Masculino  

Colonia-Castells

firefox
Citar            
MensajeEscrito el 30 May 2007 03:13 pm
No, eso no sirve. Para decirlo de la manera más simple posible. El for se ejecuta "de un solo saque", es decir, no hay manera de que una tecla se presione mientras se ejecuta. Simplemente no funciona así. Vas a tener que ingeniártelas de otro modo.

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

firefox
Citar            
MensajeEscrito el 30 May 2007 03:59 pm
OK gracias!

Por loisin

65 de clabLevel



Genero:Masculino  

Colonia-Castells

firefox
Citar            
MensajeEscrito el 30 May 2007 04:05 pm
Para qué lo necesitabas? Quizá te pueda ayudar a hacerlo de otra manera.

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

firefox
Citar            
MensajeEscrito el 30 May 2007 04:29 pm
Nada tranquilo.
Lo que estoy haciendo, son unos botones creados dinámicamente. Estos tienen un texto y el fondo blanco. (cada botón tiene un texto que puede ser más largo o más corto, según los caracteres). Cuando el usuario, pincha a uno el mismo rectángulo que tengo para hacer el “hit”, se pone de color (o gana en _alpha); y tiene el tamaño según la caja de texto del botón.
Si el usuario hace doble click, la caja de texto pasa de ser “dynamic” a “input” y con un focus para que escriba directamente. Cuando termina de escribir, éste por inercia aprieta el “enter”, y es ahí donde necesitaba pasarle el valor del for para saber en que botón estaba.

Al final lo he resuelto con una función aparte que cierra todos los botones menos el que le paso con el valor del for. Supongo que es lo mismo, pero de esta manera utilizo dos for y lo quería optimizar para usar uno solo.

Que te parece la solución? La verdad es que tiene algunos fallos aún, como lo del tamaño de la caja según el campo de texto. Si escribo muchos caracteres me hace una caja con un margen de error; en cambio si son pocos caracteres va perfecto. Esto será cuestión de darle mas vueltas. Quizás es un problema en tiempo de ejecución, al estar todo dentro del for… nose.

Muchas gracias Hernan por tu apoyo, cualquier cosa ya sabes (aunque poco podré ayudar, jeje)

Salut!

Por loisin

65 de clabLevel



Genero:Masculino  

Colonia-Castells

firefox
Citar            
MensajeEscrito el 30 May 2007 04:44 pm
Para saber en qué botón está, podés usar el focus.

Respecto al tamaño de la caja... usás la propiedad textHeight y textWidth??

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

firefox
Citar            
MensajeEscrito el 01 Jun 2007 08:13 am
Muchas gracias Hernan, y perdona que conteste tarde. La verdad es que he buscado mucho referente a la propiedad autoSize del flash y en más de un sitio he visto que se trata de un "bug" reconocido por Macromedia.

No coje bién el tamaño del texto (y si hace lo mismo con textWidth), si este tiene formato, o una fuente definida.

Aún no lo he podido probar en la nueva versión de flash (cs3), si alguien la tiene estaria bien que posteara sus resultados!

Salut!

Por loisin

65 de clabLevel



Genero:Masculino  

Colonia-Castells

firefox

 

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