Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 12.01.2012, 11:16
CARVILLE вне форума Посмотреть профиль Отправить личное сообщение для CARVILLE Найти все сообщения от CARVILLE
  № 1  
Ответить с цитированием
CARVILLE

Регистрация: Mar 2011
Сообщений: 40
Question Проблемы с массивами

Доброе утро, уважаемые форумчане, появилась проблема, никак не могу разобраться: Есть код
Код 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-хмерного, а не просто указатели на них??? Как мне решить данную проблему?

Старый 12.01.2012, 11:55
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 2  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Цитата:
Возможно ли такое, что в 1мерном массиве находятся просто копии мувиклипов 2-хмерного
Нет.
В этом коде я не вижу двумерного массива. Оба массива обычные. Просто в первом случае явно ссылка помещается на указанный индекс, а во втором она добавляется в конец массива. Но по сути происходит одно и то же.

Старый 12.01.2012, 14:42
CARVILLE вне форума Посмотреть профиль Отправить личное сообщение для CARVILLE Найти все сообщения от CARVILLE
  № 3  
Ответить с цитированием
CARVILLE

Регистрация: Mar 2011
Сообщений: 40
То есть, как обычные??? если я первой ячейке массива temp - temp[0] присваиваю массив ear1, второй - массив ear2, и т.д. то это не 2мерный массив?, то как же тогда 2мерный выглядит? мож, я чего-то не понял?

Старый 12.01.2012, 14:54
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 4  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Значит они оба двумерные. Но никак не
Цитата:
2хмерный(temp) и одномерный(ar)
Тут вообще не понятно что такое ear1, ear2 и т.п., как они создаются и где.
И вообще не ясно что происходит в коде. Приведенный кусок кода к описанной проблеме вообще отношения не имеет.

Старый 12.01.2012, 14:59
HardCoder вне форума Посмотреть профиль Отправить личное сообщение для HardCoder Найти все сообщения от HardCoder
  № 5  
Ответить с цитированием
HardCoder
 
Аватар для HardCoder

блогер
Регистрация: Apr 2011
Сообщений: 583
Записей в блоге: 2
В вашем случае оба массива двухмерные. Если 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;
}
__________________
Я мало чего умею, но зато хорошо умею учиться...


Последний раз редактировалось HardCoder; 12.01.2012 в 15:11.
Старый 12.01.2012, 16:00
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 6  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
вероятна путаница из-за терминологии, во флеше нет многомерных массивов, только одномерные
можно только массив массивов
глянь такой расклад
Код 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]);

Старый 12.01.2012, 17:44
CARVILLE вне форума Посмотреть профиль Отправить личное сообщение для CARVILLE Найти все сообщения от CARVILLE
  № 7  
Ответить с цитированием
CARVILLE

Регистрация: Mar 2011
Сообщений: 40
Спасибо большое, всем кто ответил, заработало)))

Создать новую тему Ответ Часовой пояс GMT +4, время: 12:24.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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