Comunidad de diseño web y desarrollo en internet online

Evento de teclado y de mouse al mismo tiempo

Citar            
MensajeEscrito el 15 Sep 2014 09:56 am
¡Hola!
Tengo una función que se ejecuta al pulsar un botón, para ello tengo colocado un addEventListener de tipo MouseEvent. Mi pregunta es, si quiero que esa función se ejecute al pulsar el botón, pero también al pulsar una tecla, ¿cómo puedo hacerlo?
Muchas gracias!

Por Xaora

30 de clabLevel



 

chrome
Citar            
MensajeEscrito el 15 Sep 2014 03:27 pm
Agregas un listener al Key y lo enlazas a la misma función ... cambia el parámetro de la función de MouseEvent a Event, ya que ahora puede recibir tanto de mouse como de teclado

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 15 Sep 2014 04:43 pm
Entiendo que debería hacer algo así:
boton.addEventListener(MouseEvent.CLICK, escribe);
stage.addEventListener(KeyboardEvent.KEY_DOWN, escribe);

function escribe(evento:Event):void
{
if (evento.keyCode == 13)
{
trace("Hola mundo");
}
trace("Hola mundo");
}

Pero no me va...

Por Xaora

30 de clabLevel



 

chrome
Citar            
MensajeEscrito el 15 Sep 2014 06:56 pm
Sería

Código ActionScript :

boton.addEventListener(MouseEvent.CLICK, escribe);
stage.addEventListener(KeyboardEvent.KEY_DOWN, escribe);

function escribe(evento:Event):void
{

if (evento is KeyboardEvent && (evento as KeyboardEvent).keyCode == 13)
{
trace("Hola mundo");
}
trace("Hola mundo");
}


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 15 Sep 2014 08:21 pm
En realidad para que al pulsar la tecla enter, no se ejecutarán los dos trace, tendría que ser así:
boton.addEventListener(MouseEvent.CLICK, escribe);
stage.addEventListener(KeyboardEvent.KEY_DOWN, escribe);

function escribe(evento:Event):void
{
if (evento is KeyboardEvent && (evento as KeyboardEvent).keyCode == 13)
{
trace("Enter");
}
else
{
trace("Mouse");
}
}

Pero quiero que se ejecuten las mismas acciones al pulsar el botón que al dar a la tecla enter, y de esta manera hay que duplicar el código. Es decir, si las acciones que se van a ejecutar son varias, tendría que escribir el código dos veces. ¿No se puede evitar esto?
Gracias!

Por Xaora

30 de clabLevel



 

chrome
Citar            
MensajeEscrito el 15 Sep 2014 08:39 pm
Para eso existe el OR

if((evento is KeyboardEvent && (evento as KeyboardEvent).keyCode == 13) || evento is MouseEvent )

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 15 Sep 2014 08:57 pm
Perfecto, es lo que buscaba.
Muchas gracias!

Por Xaora

30 de clabLevel



 

chrome

 

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