Cette fonction ouvre une fenêtre et affiche la question que vous définissez dans la fonction pour l'utilisateur. Il s'agit d'une fonction asynchrone, et en tant que tel, GameMaker Studio 2 ne bloque pas le périphérique sur GameMaker Studio 2 il s'exécute en attendant la réponse, mais continue à exécuter les événements normalement. La fonction a deux boutons qui montrent "Oui" et "Non", et une fois que l'utilisateur a appuyé sur un, un événement Dialog asynchrone est déclenché qui, pour la durée de cet événement seulement, aura un ds_map stocké dans la variable async_load.
Cette carte contiendra les deux clés "id" et "status". "id" est la valeur qui a été retournée par la fonction lors de l'appel, tandis que le "status" sera soit true ou false pour "Oui" et "Non" respectivement.
show_question_async(string);
Argument La description String La question à poser à l'utilisateur.
Real
L' événement de presse de la souris gauche (par exemple) de l'objet qui affiche le message aura le code suivant:
msg = show_question_async("Do you want to buy some
armour for " + string(armour[0, 5]) + "coins?");
Ce qui précède montrera une question avec la chaîne donnée, demandant à l'utilisateur d'appuyer sur "oui" ou "non". L'identifiant de la fonction est stocké dans la variable "msg" et sera utilisé dans l' événement Dialogs asynchrone comme indiqué ci-dessous:
var i_d, stat;
i_d = ds_map_find_value(async_load, "id");
if i_d == msg
{
if ds_map_find_value(async_load, "status")
{
coins -= armour[0,5];
global.protection +=
armour[0,0];
}
}
Le code ci-dessus vérifie la clé "id" du retour ds_map contre la valeur stockée dans la variable "msg". Si elles sont identiques, il vérifie ensuite si l'un des deux boutons a été enfoncé et s'il revient true il déduira ensuite une valeur d'une variable et ajoutera également une valeur à une variable globale.