2016-04-24 9 views
1

今日、私はGameMakersのswitch文が実行されていることに大きな問題がありました。 HTTP ASYNC EVENTが実行されると、show_message(answer);が実行されますが、その下のswitch文は実行されません。 "答え変数"のstring_lengthが1であると思われ、string_digitsを使用して、httpコールバックを取得するときに表示される可能性のあるすべての空白または不要な文字をエスケープすることを確認するため、コンパイラエラーです。変数答えの のみ可能返す値は次のとおりです。0、1、2、3、だからここGameMaker:httpスイッチのステートメントがhttp非同期イベントで実行されない

4. HTTP ASYNCイベントのコードです:すべてを事前に

if(ds_map_find_value(async_load, "id") == request_auth) { 

    if(ds_map_find_value(async_load, "status") == 0) { 
     callback = ds_map_find_value(async_load, "result"); 

     var answer = string_digits(callback); 
     show_message(answer); 

     switch(answer) { 
     case USERNAME_EXISTS: 
     show_message("username already exists"); 
     break; 

     case ACCOUNT_CREATED: 
     show_message("Your account has been successfully created!"); 
     break; 

     case LOGGED_IN: 
     buffer_seek(global.buffer, buffer_seek_start, 0); 
     buffer_write(global.buffer, buffer_u8, 0); 
     buffer_write(global.buffer, buffer_string, "username"); 
     Send(); 
     break; 

     case INCORRECT_PASSWORD: 
     show_message("your password is incorrect"); 
     break; 

     case INCORRECT_USERNAME: 
     show_message("your username is invalid");   
     break; 

     } 

     } 



     else { 

     callback = noone; 

     } 
    } 

感謝答え!乾杯!

+0

マクロにはどの値がありますか?数字( '0'、' 1'、 '2'など)や文字列(' '0 ''、 '' 1 "'、 '' 2 "'など)ですか? – Dmi7ry

答えて

0

string_digitsは、数値ではなく文字列を返します。たとえば、文字列に "1"と表示された場合、返される値は49になります。これは "1"のASCIIコードです。

あなたのマクロはASCIIコード( "1"、 "2"、 "3" ... = 49、50、51)ではなく数字...)。これは、症例が引き起こされない理由を説明することができます。

スイッチが確実に読み取られる場合は、ケースの最後に「default」を入力してください。ケースがそうでなかったらそれは引き起こされます。たとえば、 "answer"の値を表示し、それがあなたが望むものであることを確認するために使用することができます。

関連する問題