Сохранение рекордов на сервере ВК (AS3)

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в Flash-приложениях (ActionScript)
Ответить
Fredie
Сообщения: 10
Зарегистрирован: 20 фев 2014, 14:50

Сохранение рекордов на сервере ВК (AS3)

Сообщение Fredie »

пишу в игре сохранение рекордов на сервере ВК, но столкнулся с такой проблемой,

Код: Выделить всё

function LoadGlobal(table:Object)        {            var row:String = table.toString();            GlobalArray.push(row);            if(Done)            {                checkText.text = "if";                var Names:Array;                var Scores:Array;                var Arr:Array;                var i = 0;                for each(var rec in GlobalArray)                {                    Arr[i] = rec[i].toString().split('|');                    i++;                }            }           checkText.text = "After If";        }
Вот функция, которая запускается при успешном получении ответа от сервера вк, с 1 значением, так вот в этой функции выполняется, почему-то только 1 команда, остальные все игнорируются, то есть происходит только добавление значения в массив, а все что после этой команды, как будто не существует. Это понял по расставленным изменениям текста в функции, то есть если менять текст до добавления в массив, то текст изменится, а все остальное не выполнится.
XELAD
Сообщения: 205
Зарегистрирован: 17 июл 2012, 05:25

Re: Вопрос по AS3

Сообщение XELAD »

Это значит, что Done != true ;)
Fredie
Сообщения: 10
Зарегистрирован: 20 фев 2014, 14:50

Re: Вопрос по AS3

Сообщение Fredie »

Нет, ты невнимательно код просмотрел, там после ветвления идет команда изменения текста, так что ты не совсем прав, чему тут равно done не очень важно, но при переходе в эту функцию done становится равно true, так что команды этого ветвления должны выполняться
XELAD
Сообщения: 205
Зарегистрирован: 17 июл 2012, 05:25

Re: Вопрос по AS3

Сообщение XELAD »

происходит только добавление значения в массив, а все что после этой команды, как будто не существует
GlobalArray.push(row);
if(Done)
{
Как объяснили так и понял.
но при переходе в эту функцию done становится равно true
Покажите мне этот кусок кода.
XELAD
Сообщения: 205
Зарегистрирован: 17 июл 2012, 05:25

Re: Вопрос по AS3

Сообщение XELAD »

Код: Выделить всё

var i = 0;for each(var rec in GlobalArray){  Arr[i] = rec[i].toString().split('|');  i++;  }
rec является ссылкой на (значение)элемент(а). А тут вы у каждого элемента ищете ещё i , который постоянно увеличивается на единицу. Вот что покажет ваша конструкция на простом примере:

Код: Выделить всё

var GlobalArray:Array = new Array();GlobalArray.push([1, 2, 3]);GlobalArray.push([4, 5, 6]);GlobalArray.push([7, 8, 9]); var i = 0;for each(var rec in GlobalArray){ trace(rec[i].toString().split('|'));  i++;  }
Выводит 1 5 9
Fredie
Сообщения: 10
Зарегистрирован: 20 фев 2014, 14:50

Re: Вопрос по AS3

Сообщение Fredie »

Да тут не суть что выполняется в ифе, суть в том, что у меня 3 команды в функции: 1) Добавлем элемент в массив, 2) Ветвление, 3) Меняем текст на "After if". Выполняется только первая команда - добавление в массив, не вторая, не третья команды не выполняются, вот в чем вся проблема. А если изменить последовательность действий, например: 1) Меняем текст на "Success", 2)Добавляем элемент в массив, 3) Ветвление, то текст изменится, а все остальное не выполнится, не ветвление, не добавление элемента в массив. Надеюсь так будет понятнее.

P.S Кстати да, на счет rec ты прав, тут мой косяк, но проблема не в этом.
XELAD
Сообщения: 205
Зарегистрирован: 17 июл 2012, 05:25

Re: Вопрос по AS3

Сообщение XELAD »

try..catch пробовали?

Код: Выделить всё

function LoadGlobal(table:Object){try{//1) Добавляем элемент в массив, 2) Ветвление, 3) Меняем текст на "After if"} catch (e:Error){     checkText.text =  String(e.message);}}
Fredie
Сообщения: 10
Зарегистрирован: 20 фев 2014, 14:50

Re: Вопрос по AS3

Сообщение Fredie »

О, спасибо, не знал что тут такое есть, да и не думал, что ошибка может быть. Оказалось много ошибок мелких, все исправил, все заработало. Еще раз спасибо!
Ответить