show_question_async


La description

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.


Syntaxe:

show_question_async(string);

Argument La description
String La question à poser à l'utilisateur.


Résultats:

Real


Exemple étendu:

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.