2016-04-24 7 views
1

Сегодня у меня возникли проблемы с выполнением инструкции оператора GameMakers. Когда выполняется HTTP ASYNC EVENT, show_message (ответ); выполнен, но инструкция switch под ним не работает. Я думаю, что это ошибка компилятора, потому что кажется, что string_length «answer variable» равно 1, и используя string_digits, чтобы убедиться, что он избегает всех возможных пробелов или ненужных символов, которые могут появляться при повторном обращении к http. только возможные возвращающиеся значения переменной ответа являются: 0, 1, 2, 3, 4.GameMaker: оператор switch Studio не выполняется в событии http async

Так вот код HTTP ASYNC EVENT:

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, что является кодом ASCII для «1».

Я считаю, что ваши макросы присваиваются номерам (1, 2, 3 ...), а не их коду ASCII («1», «2», «3» ... = 49, 50, 51 ...). Это может объяснить, почему случаи не срабатывают.

Если вы уверены, что переключатель прочитан, попробуйте поместить «по умолчанию» в конце случаев. Это будет вызвано, если случаев не было. Вы можете использовать его, чтобы отобразить значение «ответ», например, и убедитесь, что это то, что вы хотите.