Game Maker Language リファレンス > 組み込み関数 用途別 > 非同期関数 > get_login_async
ユーザ名とパスワードを入力するウィンドウを非同期で表示します
get_login_async(name, password);
この関数はユーザ名とパスワードを入力するウィンドウを開きます。引数にはウィンドウの初期入力値を指定します。これにより以前に入力した値を設定することが可能です。不要であれば空文字を指定します。これは非同期関数であり、入力完了を待たずに通常通りイベントを実行し続けます。ユーザが"OK"ボタンを押すと、変数"async_load"に"ds_map"型でデータを返します。
このマップは、"username"(ユーザ名)と、"password"(パスワード)という2つのキーを持っています。例えばこの値をサーバに送信する際は、json_encode()でJSON文字列に変換すると良いでしょう。
なおウィンドウへの入力が完了するまでは、ds_mapの"id"キーの値は「-1」となります。
"Create"イベントにユーザログインの処理を記述してみます。
ini_open("Profile.ini"); u = ini_read_string("User","0",""); p = ini_read_string("User","1",""); ini_close(); login = get_login_async(u,p);
上記コードはINIファイルを開いて(存在しない場合は新規作成する)、そのファイルに格納されたユーザ名とパスワードを取得します。INIファイルにユーザ名やパスワードが格納されていなければ空文字となります。そしてget_login_async()を呼び出しログインダイアログを表示し、戻り値を"login"変数に格納します。
非同期で処理しているので、結果はDialogイベントで以下のように戻り値をチェックする必要があります。
if ds_map_find_value(async_load, "id") == login { u = ds_map_find_value(async_load, "username"); p = ds_map_find_value(async_load, "password"); }
上記コードは、"async_load"変数の"id"キーをチェックし、"login"変数と値が一致するかどうかを判定しています。もしログインが完了すれば、ユーザが入力した情報を各種変数に格納します