Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Проблемы с массивами (http://www.flasher.ru/forum/showthread.php?t=173818)

CARVILLE 12.01.2012 11:16

Проблемы с массивами
 
Доброе утро, уважаемые форумчане, появилась проблема, никак не могу разобраться: Есть код
Код AS3:

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 минут
Код AS3:

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

вероятна путаница из-за терминологии, во флеше нет многомерных массивов, только одномерные
можно только массив массивов
глянь такой расклад
Код AS3:

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

Спасибо большое, всем кто ответил, заработало)))


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

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