get_string_async


La description

Cette fonction ouvre une fenêtre et affiche un message ainsi qu'un espace pour l'utilisateur d'entrer une chaîne (qui contiendra la chaîne par défaut fournie pour commencer). 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. Une fois que l'utilisateur a tapé sa chaîne et appuyé sur le bouton "Ok", 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 trois clés "id", "status" et "result". "id" est la valeur qui a été retournée par la fonction lors de l'appel, le "status" sera soit true pour le bouton "OK" appuyé, ou false si le message a été annulé (le cas échéant, toutes les plates-formes cibles n'autorisent pas l'annulation du message). Enfin "résultat" retournera la chaîne que l'utilisateur a entrée (ou une chaîne vide "" si aucune n'a été fournie).


Syntaxe:

get_string_async(string, default);

Argument La description
String Le message à afficher dans le dialogue.
default La chaîne par défaut


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 = get_string_async("What's your name?","Anon");

Ce qui précède montrera un message demandant à l'utilisateur de saisir une chaîne de caractères et d'appuyer sur "OK". 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 = ds_map_find_value(async_load, "id");
if i_d == msg
   {
   if ds_map_find_value(async_load, "status")
      {
      if ds_map_find_value(async_load, "result") != ""
         {
         global.Name = ds_map_find_value(async_load, "result");
         }
      }
   }

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, elle vérifie ensuite si "OK" a été pressé (plutôt que la fenêtre est fermée / annulée) et si elle revient true il vérifie ensuite le "résultat" d'une chaîne pour s'assurer qu'aucune chaîne vide n'a été renvoyée avant de définir une variable globale.