Просмотр полной версии : Массивы, приемущества и недостатки
Кто что знает пишите,
Буду рад любым заметкам и пояснениям,
С ув,
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++)
}
}
У меня есть текстовый файл, в котором куча переменных, к примеру по пяти семьям:
Семья №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
:)
greyshaman
16.08.2002, 13:03
2greep Надеюсь что теперь ты разберешся, для чего нужны такие "[]" ковычки :D :D :D
DeliMIter
16.08.2002, 13:37
Я думаю, что после наших бредней greep решит, что лучше почитать про массивы в хелпе, а не спрашивать у маньяков...
Ага или забьет на них (Более вероятно - если задает такие вопросы) :)
DeliMIter
16.08.2002, 13:49
Да, точно. Переменные a1, a2, a3, a4, .... , a3245, a3246, ... гораздо понятнее и удобнее в адресации.
Оригинал написал(а) DeliMIter
Переменные a1, a2, a3, a4, .... , a3245, a3246, ... гораздо понятнее и удобнее в адресации.
:eek:
2DeliMIter это шутка :confused:
а то у мя с юмором фигово :/
:D ;)
Ок, народ, не хотите объяснять, не надо, это дело добровольное.
Вы лучше скажите, что с моим примером про семьи делать то.
У меня 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. Не надо массивы вставлять в разные кадры - это ни к чему. Делай все в одном кадре.
О-о-о-о....
Для меня это "Темным лесом в туалет".
Попробую исходник начеркать, мож ты как нить присунешь туды код ??? :confused:
DeliMIter
17.08.2002, 16:23
Ты сформулируй задачу ЧЕТКО, в том смысле что не "когда то-то, то переходит в такой-то кадр..." а с точки зрения ЧТО БУДЕТ ВИДЕТЬ ПОЛЬЗОВАТЕЛЬ. А то я до сих пор не понял, что тебе собстна нужно... А там глядишь, и код нарисуется :))
2DeliMIter
Человек видит три кнопки, при наведении на эту кнопку, он получает инфо по семье.
Вся соль в том, что переменные подгружаются из отдельного тхт.
смотри исход
Nox Noctis
20.08.2002, 19:18
слушай, а при чем тут вообще какие-то массивы, а ? :))
у тебя в том исходнике с коровой абсолютно та же ошибка была: ты грузишь переменные в _левел0 а берешь их почему-то внутри мувика 'инфо', куда они никоим образом не попадают (по тому как у тебя написано)
надо либо внутри мувика инфо во всех текстовых полях прописать путь _level0
либо
грузить при помощи info.loadVariables("families.txt"); и все :))
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.