Страница 1 из 1

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

Добавлено: 11 мар 2014, 20:42
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 команда, остальные все игнорируются, то есть происходит только добавление значения в массив, а все что после этой команды, как будто не существует. Это понял по расставленным изменениям текста в функции, то есть если менять текст до добавления в массив, то текст изменится, а все остальное не выполнится.

Re: Вопрос по AS3

Добавлено: 12 мар 2014, 00:21
XELAD
Это значит, что Done != true ;)

Re: Вопрос по AS3

Добавлено: 12 мар 2014, 12:03
Fredie
Нет, ты невнимательно код просмотрел, там после ветвления идет команда изменения текста, так что ты не совсем прав, чему тут равно done не очень важно, но при переходе в эту функцию done становится равно true, так что команды этого ветвления должны выполняться

Re: Вопрос по AS3

Добавлено: 12 мар 2014, 14:31
XELAD
происходит только добавление значения в массив, а все что после этой команды, как будто не существует
GlobalArray.push(row);
if(Done)
{
Как объяснили так и понял.
но при переходе в эту функцию done становится равно true
Покажите мне этот кусок кода.

Re: Вопрос по AS3

Добавлено: 12 мар 2014, 14:55
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

Re: Вопрос по AS3

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

P.S Кстати да, на счет rec ты прав, тут мой косяк, но проблема не в этом.

Re: Вопрос по AS3

Добавлено: 12 мар 2014, 16:11
XELAD
try..catch пробовали?

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

function LoadGlobal(table:Object){try{//1) Добавляем элемент в массив, 2) Ветвление, 3) Меняем текст на "After if"} catch (e:Error){     checkText.text =  String(e.message);}}

Re: Вопрос по AS3

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