Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   Незаполняется массив (http://www.flasher.ru/forum/showthread.php?t=62409)

CrazY WorM 28.08.2004 00:04

Может так >>>
Код:

vuz =new Array();
acts=new Array();

Load = new LoadVars();
Send = new LoadVars();

Send.id = "1";
Send.flag = "team";
Send.base = "0";

Send.sendAndLoad("http://localhost/myprog/shut.php", Send, "GET");
Send.onLoad = initVars;
function initVars() {
vuz.push(Send.a);
acts.push(Send.b);
}


Almik 28.08.2004 00:16

не вышло.
он только длинну вернул.

KidsKilla 28.08.2004 14:07

если уж тебе упёрлось проверять переменную через текстовое поле поставь как переменную не vuz а vuz[0]...

да, кстати ты юзаешь синтаксис as1 а там нет жестко привязанного типа переменных - ты можешь написать

var someVar = new Array();
someVar = "some text";

и в someVar будет строка, а не массив...

Almik 28.08.2004 16:59

да, думаю ты прав дело в особенности as1. пойду покупать последнию верси.

спасибо.

KidsKilla 28.08.2004 17:10

зачем те as2? по мне так as1 удобнее. просто чуть сложнее отслеживать изменения переменной.
кароч, у тя все по ходу пашет нормально, просто проверяешь коряво))

Almik 28.08.2004 19:29

а как же проверять тогда ? я создал динамические поля с названиями массивов. затем , с помощью цикла заполняю массив:

----------------------------------------------------------------
vuz =new Array();
acts=new Array();


for (k=1; k<=5; k++) // т.е. в данном примере я заполняю 5 элементов
{
Load = new LoadVars();
Send = new LoadVars();

Send.id = k; // переменную которую необходимо менять
Send.flag = "team";
Send.base = "0";

Send.sendAndLoad("http://localhost/myprog/shut.php", Send, "GET");
Send.onLoad = initVars;
function initVars()
{
vuz[k] = Send.a; // заполняю 1ый массив
acts [k]= Send.b;// заполняю 2ой массив
}
}
-------------------------------------------------------------------
в итоге массив пуст. точнее поля с названиями этих массивов.
но вот что интересно, если я объявлю эти массивы не в начале, как сделал, а в конце:



function initVars()
{

vuz =new Array();
vuz[k] = Send.a; // заполняю 1ый массив
acts=new Array();
acts [k]= Send.b;// заполняю 2ой массив
}
то массив заполнится , но, как можно догадаться , только на 1 элемент. и это понятно, т.к. находясь в цикле, массивы с каждым разом объявляются заного.

Итогю: как я понимаю дело в облости жизни массива. т.к. в 1 случаи я объявил массив и заполнил его в разных местах, а во 2ом внутри одной функции.

есть мысли ?

KidsKilla 29.08.2004 16:05

Цитата:

var k = 1;
var kmax = 5;
var vuz =new Array();
var acts=new Array();
var Load = new LoadVars(); //зачем это здесь?
var Send = new LoadVars();
Send.flag = "team";
Send.base = "0";

function initVars() {
vuz[k] = this.a;
acts[k]= this.b;
trace("acts["+k+"]="+acts[k]+"; vuz["+k+"]="+vuz[k]+";");
}

for(k; k<kmax; k++)
Send.id = k;
Send.sendAndLoad("http://localhost/myprog/shut.php", Send, "GET");
Send.onLoad = initVars;
}

по-моему так...

сначала определяем функцию, а уж потом циклы и пр...

Almik 29.08.2004 17:39

ну вот. хотя бы заполнил массив. спасибо тебе большое.
только вот не понятно почему везде индекс 6.
(единственное что я изменил в твоем коде, это не k<kmax ,а k<=kmax т.к. мне нужно захватить и посл. элемент)

Output:
-------------------------------
acts[6]=kira; vuz[6]=SPBGUI;
acts[6]=misha; vuz[6]=good;
acts[6]=lesha; vuz[6]=well;
acts[6]=sasha; vuz[6]=nowell;
acts[6]=anton; vuz[6]=very;
-------------------------------


ну и собственно динамо поле не заполнилось все равно.
у меня 2а поля :
1ое InstanceName - нету var vuz;
2ое InstanceName - нету var acts;

ps а var load действительно ненужен. я его забыл удалить. раньше использоваk .load сейчас .sendandload. извините.

KidsKilla 29.08.2004 18:27

хмм...
ты точно не переопределяешь k в скрипте?
если нет - проставь в некоторых местах trace, мож выяснишь.
а я всё-равно больше не смогу помочь, не видя целого файла...

по-поводу полей - я ступил:
Цитата:

var k = 1;
var kmax = 5;
vuz =new Array();
acts=new Array();

var Send = new LoadVars();
Send.flag = "team";
Send.base = "0";

function initVars() {
vuz[k] = this.a;
acts[k] = this.b;
trace("acts["+k+"]="+acts[k]+"; vuz["+k+"]="+vuz[k]+";");
}

for(k; k<=kmax; k++)
Send.id = k;
Send.sendAndLoad("http://localhost/myprog/shut.php", Send, "GET");
Send.onLoad = initVars;
}


Almik 29.08.2004 22:24

и на этом спасибо. буду рыть дальше.


Часовой пояс GMT +4, время: 10:08.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.