Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Marth en Julio 21, 2014, 11:42:08 PM

Título: Funciones en GML [Cerrado]
Publicado por: Marth en Julio 21, 2014, 11:42:08 PM
En el tutorial de Game Maker se menciona que puedo "generar eventos" (ej: event_perform(ev_create,0) a través de GML, sin embargo, no explica muy bien como se supone que uso dicho código, a parte de que parece un sinsentido puesto que primero indico el evento y luego la acción.
¿Alguien me explica como usar esos códigos y cual es su sentido?
Título: Re:Funciones en GML
Publicado por: Guacusio en Julio 22, 2014, 01:32:42 AM
event_perform(tipo,subtipo) lo que hace es ejecutar el código del evento indicado sobre la instancia actual. En esta función no se indica ninguna acción, sólo el tipo de evento. Por ejemplo, event_perform(ev_create,0) indica que debe ejecutarse el código del evento create nuevamente (ya se ejecutó cuando se creó la instancia), event_perform(ev_keypress, ord("W")) hace que se ejecute el código asociado al evento de presionar la tecla W, etc.

El objetivo de esta función es evitar repetir código cuando quieres que algo se haga no sólo cuando ocurra su evento asociado sino que también en otro momento. Por ejemplo, si tienes código asociado a la pulsación de la tecla flecha izquierda y quieres que cuando en el joystick se pulse hacia la izquierda se haga lo mismo, en vez de duplicar el código puedes "invocar" al evento con event_perform(ev_keypress,vk_left);
Título: Re:Funciones en GML
Publicado por: Marth en Julio 22, 2014, 03:34:23 PM
¡Gracias! ;D

Pero observando la lista de "eventos", me estoy encontrando incluso eventos que juraría que no existen (ej: ev_joystick1_button1).
Título: Re:Funciones en GML
Publicado por: Guacusio en Julio 22, 2014, 10:56:13 PM
Efectivamente, los eventos asociados a los joysticks ya no existen en GM:S, sin embargo, si por ejemplo importas un editable hecho en GM8 que contiene objetos con código para los eventos de joystick (que antes se encontraban dentro de los eventos del mouse), GM:S mantendrá esos eventos en los objetos aunque tú no puedes agregarlos desde GM:S. Es extraño pero así es, y por el tema de la compatibilidad de legado se mantuvo la posibilidad de llamar a estos eventos con event_perform. Ahora, para detectar cambios en el estado del joystick se deben utilizar las funciones dedicadas para ello, ya sea en un evento step o donde quieras leer su estado.
Título: Re:Funciones en GML [Cerrado]
Publicado por: Marth en Julio 22, 2014, 11:49:16 PM
Pues vaya. Me decepciona que siendo supuestamente GMS una versión "superior" carezca de cosas que si tuviese en el original. :(