PDA

Просмотр полной версии : Массивы, приемущества и недостатки


greep
14.08.2002, 00:25
Кто что знает пишите,
Буду рад любым заметкам и пояснениям,
С ув,
Greep

DeliMIter
15.08.2002, 16:21
2greep

Массивы нужны для хранения индексированных данных. Кроме того, являясь наследниками объекта, массивы сохраняют все их свойства, чего, кстати, нету в языках высокого уровня. Элементами массива могут быть ЛЮБЫЕ данные: переменные, строки, мувики, звуки и даже другие массивы. В свете всего вышесказанного я призываю прочитавших это бросить битье головой об стену в использовании непонятных переменных, и немедленно переходить на массивы!!

Хыхыхы :D

greyshaman
15.08.2002, 16:31
// DeliMIter ;)
fs=[[],[],[],[],[],[[]],[[]],[]];
for(i=0;i<=4;i++){
fs[5][i]=new Array(24);
fs[6][i]=new Array(24);}
_root.onEnterFrame =function (){
this.clear();
for(i=0;i<=4;i++){
if((fs[1][i]++)==fs[2][i]){
fs[2][i]=random(6)+6;
fs[3][i]=random(9)+3;
fs[4][i]=random(3)-1;
fs[1][i]=0;}
fs[5][i].unshift(fs[5][i][1]+4*Math.cos((fs[7][i]+=fs[4][i]*fs[3][i])*0.0174532925199433));
fs[6][i].unshift(fs[6][i][1]+4*Math.sin(fs[7][i]*0.0174532925199433));
if(200<Math.sqrt ( (fs[5][i][1])*(fs[5][i][1])+(fs[6][i][1])*(fs[6][i][1]) )){
fs[5][i][1]=fs[6][i][1]=0;}
if(fs[5][i].pop()!=fs[6][i].pop()+1000)s=0;
do{
lineStyle((50-s*2)/5,0xddff99,(120-s*4));
moveTo((fs[5][i][s]+200),(fs[6][i][s]+200));
lineTo((fs[5][i][s]+200.25),(fs[6][i][s]+200.25));
}while(fs[5][i].length>s++)
}
}

greep
15.08.2002, 18:02
У меня есть текстовый файл, в котором куча переменных, к примеру по пяти семьям:
Семья №1
1) Кол-во членов семьи
2) Их общая масса в кг
3) Их общий возраст

И так по каждой семье...

Как я могу предположить в тхт это выглядит примерно так:

ivanovs_kol-vo=5&ivanovs_mass=350&ivanovs_age=270& и.д.
По каждой семье.

Как я понимаю, во влешовом роллике будет 5 массивов(по каждой семье).

И когда я нажимаю кнопку мувик "familes" переходит в кадр (к примеру "ivanovs" в котором 3 текстовых поля:
1) kol-vo
2) mass
3) age

В действиях кадра ivanovs вписано что-то вроде вставь масств ivanovs.

Все тоже в кадре Petrovs, Sidarovs...

... А теперь пару вапросов:
1) Как подгрузить переменники и разбить их по массивам.
2) Как нужный массив вставить в нужный кадр
3) Какие названия нужно приминять к текстовым полям находящимся в кадре ivanovs

Убедительная прозьба, пожалуйста напишите исходник.
Я по себе знаю таких непонимающих людей как я очень много.
В дальнейшем этот урок могбы пригодиться очень многим.

Заранее благодарен за все,
С ув,
Greep

greyshaman
15.08.2002, 18:26
В твоей постановке массивы, .... , не нужны.
Поиск тебе в помощь.

DeliMIter
16.08.2002, 12:33
2 greyshaman

Посмотрел я твой код, очень неплохо, надо сказать :D Правда я позволил себе в нем еще порыться и вот что вышло...

// greyshaman :cool:
fs = [[], [], [], [], [], [[]], [[]], [], _root, "onEnterFrame", 0, 5, undefined, "clear", undefined, "unshift", "pop", "length", Math, "sin", "cos", "sqrt", "lineStyle", "moveTo", "lineTo"];

for (fs[12]=fs[10]; fs[12]<fs[11]; fs[12]++) {
fs[5][fs[12]]=new Array(24);
fs[6][fs[12]]=new Array(24);
}

fs[8][fs[9]] = function() {
fs[8][fs[13]]();
for (fs[12]=fs[10]; fs[12]<fs[11]; fs[12]++) {
if ((fs[1][fs[12]]++) == fs[2][fs[12]]) {
fs[2][fs[12]]=random(6)+6;
fs[3][fs[12]]=random(9)+3;
fs[4][fs[12]]=random(3)-1;
fs[1][fs[12]] = fs[10];
}
fs[5][fs[12]][fs[15]](fs[5][fs[12]][1]+4*fs[18][fs[20]]((fs[7][fs[12]]+=fs[4][fs[12]]*fs[3][fs[12]])*0.0174532925199433));
fs[6][fs[12]][fs[15]](fs[6][fs[12]][1]+4*fs[18][fs[19]](fs[7][fs[12]]*0.0174532925199433));
if (200<fs[18][fs[21]]((fs[5][fs[12]][1])*(fs[5][fs[12]][1])+(fs[6][fs[12]][1])*(fs[6][fs[12]][1]))) {
fs[5][fs[12]][1]=fs[6][fs[12]][1] = fs[10];
}
if (fs[5][fs[12]][fs[16]]() != fs[6][fs[12]][fs[16]]()+1000) fs[14] = fs[10];
do {
fs[8][fs[22]]((50-fs[14]*2)/5,0xddff99,(120-fs[14]*4));
fs[8][fs[23]]((fs[5][fs[12]][fs[14]]+200),(fs[6][fs[12]][fs[14]]+200));
fs[8][fs[24]]((fs[5][fs[12]][fs[14]]+200.25),(fs[6][fs[12]][fs[14]]+200.25));
} while (fs[5][fs[12]][fs[17]] > fs[14]++);
}
}

greyshaman
16.08.2002, 12:46
:)

RDA
16.08.2002, 12:55
:D :D :D :D

greyshaman
16.08.2002, 13:03
2greep Надеюсь что теперь ты разберешся, для чего нужны такие "[]" ковычки :D :D :D

DeliMIter
16.08.2002, 13:37
Я думаю, что после наших бредней greep решит, что лучше почитать про массивы в хелпе, а не спрашивать у маньяков...

RDA
16.08.2002, 13:39
Ага или забьет на них (Более вероятно - если задает такие вопросы) :)

DeliMIter
16.08.2002, 13:49
Да, точно. Переменные a1, a2, a3, a4, .... , a3245, a3246, ... гораздо понятнее и удобнее в адресации.

lexass
16.08.2002, 13:55
Оригинал написал(а) DeliMIter
Переменные a1, a2, a3, a4, .... , a3245, a3246, ... гораздо понятнее и удобнее в адресации.
:eek:
2DeliMIter это шутка :confused:

а то у мя с юмором фигово :/

:D ;)

greep
16.08.2002, 14:50
Ок, народ, не хотите объяснять, не надо, это дело добровольное.

Вы лучше скажите, что с моим примером про семьи делать то.

У меня 4 кнопки

on (rollOver) {
_root.families.gotoandstop("ivanovs")
}

На Остальных метки другие (petrovs, sidarovs etc)

Есть мувиКлип "Families" в нем кадры с названиями в честь семьи.

Я же не могу при РоллОвере каждый раз грузить переменник, это очень медленно....

Что делать-то

DeliMIter
16.08.2002, 15:04
2lexass

Это шутка. Просто у меня плохая привычка после шуток не ставить смайлы, что народ иногда шокирует :D

2greep

В текстовом файле пишешь

5//400//200
3//500//1000
1//120//5
ну и тэдэ

грузишь свой файл

X = new XML();
X.onLoad = function() {
var S = this.valueOf();
// вот тут я точно не помню, потрейсишь - поймешь
_root.A = S.split(chr(13));
for (var i=0; i<_root.A.length; i++) _root.A[i] = _root.A[i].split("//");
}
X.load("families.txt");

После чего у тебя в руте появляется массив A вида [[5, 400, 200], [3, 500, 1000], [1, 120, 5], ...] (кстати, не забудь, что все эти числа будут строковыми переменными и их стоит перевести с помощью ф-ции Number()). Вот. Назначаешь каждой кнопке айдишник (хотя бы в томже on'е) и работаешь по нему.

P.S. Не надо массивы вставлять в разные кадры - это ни к чему. Делай все в одном кадре.

greep
17.08.2002, 02:10
О-о-о-о....

Для меня это "Темным лесом в туалет".
Попробую исходник начеркать, мож ты как нить присунешь туды код ??? :confused:

DeliMIter
17.08.2002, 16:23
Ты сформулируй задачу ЧЕТКО, в том смысле что не "когда то-то, то переходит в такой-то кадр..." а с точки зрения ЧТО БУДЕТ ВИДЕТЬ ПОЛЬЗОВАТЕЛЬ. А то я до сих пор не понял, что тебе собстна нужно... А там глядишь, и код нарисуется :))

greep
20.08.2002, 00:17
2DeliMIter

Человек видит три кнопки, при наведении на эту кнопку, он получает инфо по семье.

Вся соль в том, что переменные подгружаются из отдельного тхт.

смотри исход

Nox Noctis
20.08.2002, 19:18
слушай, а при чем тут вообще какие-то массивы, а ? :))
у тебя в том исходнике с коровой абсолютно та же ошибка была: ты грузишь переменные в _левел0 а берешь их почему-то внутри мувика 'инфо', куда они никоим образом не попадают (по тому как у тебя написано)

надо либо внутри мувика инфо во всех текстовых полях прописать путь _level0
либо
грузить при помощи info.loadVariables("families.txt"); и все :))