Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Ziliock en Abril 10, 2014, 10:37:00 PM

Título: Como inhabilitar teclas
Publicado por: Ziliock en Abril 10, 2014, 10:37:00 PM
Alguna funcion que permita que la oprimir una tecla esta no desencadene sus comandos asignados y como tambien desactivar esta funcion.Gracias de antemano
Título: Re:Como inhabilitar teclas
Publicado por: penumbra en Abril 10, 2014, 11:13:37 PM
Creo que no existe una función así (a menos que alguien me corrija). El programador es el encargado de indicar si al presionar una tecla ocurre (o no) algo. Quiero decir que en cualquier momento es posible habilitar/deshabilitar una tecla sin necesidad de alguna función especial, sólo se necesita una variable booleana.

activa_tecla_A = 0;              //Cambiar a 1 si se desea usar la tecla, 0 si se desea inhabilitar           

if keyboard_check(ord('A')) and (activa_tecla_A)
{
    //acciones para la tecla A
}
Título: Re:Como inhabilitar teclas
Publicado por: vampy09 en Abril 10, 2014, 11:27:36 PM
Otra manera :

Crea una variable global
global.valido = false;

En el objeto que deseas inhabilitar la tecla:
1) Crea un evento Other/User define 0
2) Dentro de este evento pon las acciones que deseas que se realizen cuando la tecla es precionada.
3)En el evento de la tecla ha inhabilitar pon lo siguiente:
if ( global.valido )
    {
     event_perform( ev_other, ev_user0 );
    }

Con esto si las acciones de la tecla inhabilitada solo se ejecutaran si la variable global.valido es true.

[EDIT]
Aunque si lo comparo con el ejemplo de [user]penumbra[/user], mi ejemplo usa en evento mas y una variable mas, por tanto el ejemplo de [user]penumbra[/user] es mas practico y sencillo.
Título: Re:Como inhabilitar teclas
Publicado por: Killer en Abril 10, 2014, 11:41:58 PM
Puedes usar keyboard_clear en el evento begin step, la función limpia el estado de la tecla y el evento se ejecuta antes que cualquier otro, de manera que juntos evitaran cualquier evento o función de tecla. Para desactivarla usa una variable de control.

if Tecla keyboard_clear(vk_space)