PDA

Просмотр полной версии : Проблемы с массивами


CARVILLE
12.01.2012, 11:16
Доброе утро, уважаемые форумчане, появилась проблема, никак не могу разобраться: Есть код
function createWave ():Array {
var temp:Array = new Array();
ar = new Array();
//...создание массива элементов ear1
temp[0]=ear1;
ar.push(ear1);
//...создание массива элементов ear2
temp[1]=ear2;ar.push(ear2);}
//...создание массива элементов ear3
temp[2]=ear3;ar.push(ear3);}
return temp;
}
Суть такова:у меня есть в итоге 2 массива: 2хмерный(temp) и одномерный(ar), в 2хмерном массиве содержаться разные виды мувиклипов, которые выводятся в разных координатах экрана, в 1мерном содержатся те же мувиклипы и он используется при обработке столкновений с определенным объектом на экране. Проблема в том, что при проверке на пересечение с любым из мувиклипов из 1мерного массива, объект не реагирует, т.е. считает что пересечения не было. Возможно ли такое, что в 1мерном массиве находятся просто копии мувиклипов 2-хмерного, а не просто указатели на них??? Как мне решить данную проблему?

goodguy
12.01.2012, 11:55
Возможно ли такое, что в 1мерном массиве находятся просто копии мувиклипов 2-хмерного
Нет.
В этом коде я не вижу двумерного массива. Оба массива обычные. Просто в первом случае явно ссылка помещается на указанный индекс, а во втором она добавляется в конец массива. Но по сути происходит одно и то же.

CARVILLE
12.01.2012, 14:42
То есть, как обычные??? если я первой ячейке массива temp - temp[0] присваиваю массив ear1, второй - массив ear2, и т.д. то это не 2мерный массив?, то как же тогда 2мерный выглядит? мож, я чего-то не понял?

goodguy
12.01.2012, 14:54
Значит они оба двумерные. Но никак не 2хмерный(temp) и одномерный(ar)

Тут вообще не понятно что такое ear1, ear2 и т.п., как они создаются и где.
И вообще не ясно что происходит в коде. Приведенный кусок кода к описанной проблеме вообще отношения не имеет.

HardCoder
12.01.2012, 14:59
В вашем случае оба массива двухмерные. Если ear1, ear2 и ear3 - массивы, то поместив эти массивы в temp - вы получите temp - двухмерный массив. Но те же массивы ear1, ear2 и ear3 вы помещаете в массив ar. С чего вы тогда взяли, что ar состоит из мувиклипов. Он состоит из массивов.

Добавлено через 43 секунды
Не успел.

Добавлено через 5 минут
function createWave ():Array {
var temp:Array = new Array();
ar = new Array();
for (var i:uint = 0; i < 3; i++){
//помещаем в массив temp массив ear1, потом ear2, потом ear3
temp[i] = this["ear"+(i+1)];
for(var j:uint = 0; j < temp[i].length; j++){
//помещаем в ar каждый элемент двумерного массива temp[i][j]
ar.push(temp[i][j]);
}
}
return temp;
}

silin
12.01.2012, 16:00
вероятна путаница из-за терминологии, во флеше нет многомерных массивов, только одномерные
можно только массив массивов
глянь такой расклад
var temp:Array = new Array();
var ar:Array = new Array();
var ear1:Array = [1, 2, 3];//...создание массива элементов ear1
temp[0]=ear1;
ar = ar.concat(ear1);
var ear2:Array = [5, 6, 7]; //...создание массива элементов ear2
temp[1] = ear2;
ar = ar.concat(ear2);
trace( "temp.length : " + temp.length);
for (var i:* in temp) trace(temp[i]);
trace( "ar.length : " + ar.length);
for (var j:* in ar) trace(ar[j]);

CARVILLE
12.01.2012, 17:44
Спасибо большое, всем кто ответил, заработало)))