Estimados programadores, estoy creando un juego el cual como todos contiene mensajes para el jugador, la función que utilizo para aquello es "DISPLAY MESSAGE" del game maker.

Sin embargo el problema que tengo es que al probar la APK en el teléfono, en el momento que aparece el mensaje, y luego presiono OK, el juego se congela por un corto espacio de tiempo y luego continua normalmente, es bastante molesto, parece bug, y no se como insertar un mensaje sin que ocurra este suceso.
alguien me puede ayudar si es que sabe porque ocurre y que debo mejorar?
o dar el código para poder insertar mensajes de esa manera para ver si resulta.
Muchas gracias!!!

#1 Agosto 18, 2015, 06:27:18 AM Ultima modificación: Agosto 18, 2015, 06:30:31 AM por penumbra
Creo que por "display_message" te refieres a la función show_message(), al menos yo no encontré ninguna función display_message en la referencia del manual.

Si estás usando show_message, entonces ahí radica el error. Según el manual:
CitarNOTE: THIS FUNCTION IS FOR DEBUG USE ONLY.

Se trata de una función que sólo se debe usar para propósitos de depuración, y no se debería usar en la versión jugable de tu proyecto. La propia naturaleza de estas funciones hace que el juego se bloquee, y por este motivo se crearon las funciones asíncronas, que permiten que la función se ejecute sin interrumpir/bloquear el juego. La solución es usar la función asíncrona show_message_async(). Cuando se usan funciones asíncronas, tienes que agregar un evento asíncrono al objeto (asynchronous Dialog event), y es dentro de ese evento que se procesa el resultado de la función. El evento asíncrono se llama cuando el usuario hace click en los botones del mensaje.

http://docs.yoyogames.com/source/dadiospice/002_reference/asynchronous%20functions/show_message_async.html
En la sección "Extended Example:" se muestra el código que normalmente va en el evento asíncrono.

Me gustaría hacer que simplemente muestre el mensaje, pasen 2 segundos y desaparezca automáticamente.
con draw_text consigo escribir el texto deseado, pero ¿que mas debo incluir en el código para que el mensaje despues de 2 segundos desaparezca automaticamente?

Hola,

Podrías colocarlo con una alarma que se dispare a los 2 segundos (creo que algo como room_speed * 2 sirve, pero no recuerdo bien) y que luego desaparezca el texto.

Saludos.

Checa mi canal de Youtube para tutoriales y charlas sobre desarrollo de videojuegos.


Mediante alarmas se me ocurre hacerlo así:
CREATE
[gml]alarm[0] = room_speed * 2[/gml]

DRAW
[gml]
if (alarm[0] >= 0)
     draw_text(x,y, mensaje)
[/gml]

Sigo los pasos mencionados, en CREATE escribo el codigo

alarm[0] = room_speed * 2

y en draw

if (alarm[0] >= 0)
     draw_text(x,y, mensaje)

obviamente dandole las coordenadas x, y correspondientes.

al momento de presionar el boton, aparece el mensaje, pèro este no desaparece automaticamente.
donde podre estar fallando?

Tienes razón. Así como está, la alarma nunca corre. Para corregir esto, agrega un evento de alarma[0] al objeto, si no hay evento, la alarma nunca inicia la cuenta regresiva.

Perfecto, ahora si funciona! Muchas gracias. ;D