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

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

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

Регистрация: Apr 2011
Сообщений: 10
По умолчанию Двумерный массив

Заполняю простой массив элементами.
количество элементов любое, в данном случае 555:
Код AS3:
        private var myTestArray:Array = new Array();
		public function Main():void 
		{	
			 fillmyArray(555);	
		}
		private function fillmyArray(a:int):void
		{
			for (var i:int = 0; i<a; i++) 
			{ 
				myTestArray[i] = 1;
			}
		}
В AS3 нет двумерных массивов.
Выхожу из положения вложением одного массива в другой.

Код AS3:
private var myArray:Array = new Array([], [], [], [], []);
		public function Main():void 
		{
                      fillArray(5, 10);		
		}
 
		private function fillArray(n:int,m:int):void 
		{
			for (var i:int = 0; i<n; i++) 
			{ 
				for (var j:int = 0; j < m; j++)
				{
                                    myArray[i][j] = 0;
				}
			}
		}
Большое неудобство в том, что я должен задавать определёное количество"столбцов" в квадратных скобках: new Array([], [], [], [], []);
Если я вызываю функцию fillArray(5, 10); с 4 или меньше вместо 5, проблемм нет.
Если ставлю больше 5 то получаю ошибку.
Причём вместо 10 могу поставить опять таки всё что угодно.

Как избежать такой жёсткой привязки к количеству new Array([], [], [], [], []); ???
Необходимо динамически задавать Любое количество "столбцов".
Заранее спасибо


Последний раз редактировалось udaaff; 23.04.2011 в 20:31.
Старый 23.04.2011, 20:31
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 2  
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Для оформления своего кода надо использовать соответствующие теги.

Старый 23.04.2011, 20:36
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 3  
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
В AS2 я делаю обычно так:
Код AS1/AS2:
var myArray:Array = new Array();
 
for (i = 0; i < 200; i++)
{
  myArray[i] = new Array();
}
Наверное и здесь такой же подход можно использовать?
Соответственно потом будут существовать двести массивов второго "уровня", которые можно заполнять.
т.е. myArray[199][j] можно будет задать.

И количество и вложенность можно и более сделать, если что. "Трехмерный":
Код AS1/AS2:
var myArray:Array = new Array();
 
for (i = 0; i < 200; i++)
{
	myArray[i] = new Array();
 
	for (j = 0; j < 300; j++) 
	{
		myArray[i][j] = new Array();
 
		//как-то заполняются сразу
		myArray[i][j][0] = ...
		myArray[i][j][1] =  ...
		myArray[i][j]['name'] = ...
		myArray[i][j]['lastname'] = ...
		//или потом...
	}
}
и т.д.
__________________
Идите первым!


Последний раз редактировалось mooncar; 23.04.2011 в 20:50.
Старый 23.04.2011, 20:38
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 4  
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
В AS3 нет многомерных массивов. Есть массивы массивов.
Пользуемся поиском.
http://www.flasher.ru/forum/showthre...F1%F1%E8%E2%FB
__________________
тут я

Старый 23.04.2011, 21:04
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 5  
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Код AS3:
private var myArray	:Array;
 
public function Main():void{
 
	this.myArray	=	this.newArray2D(5, 7);
 
}//Main
 
private function newArray2D(n:int, m:int):Array/*of Array of int*/{
 
	//Будущая матрица
	var newArray:Array/*of Array of int*/	=	[];
 
	//Добавляем строки по одной
	for(var i:int = 0; i < n; i++){
 
		//Будущая строка
		var newRow:Array/*of int*/	=	[];
 
		//Заполняем строку
		for(var j:int = 0; j < m; j++){
 
			//Добавляем ноль в конец строки
			newRow.push(0);
 
		}//for j
 
		//Добавляем полученную строку в матрицу
		newArray.push(newRow);
 
	}//for i
 
	return newArray;
 
}//newArray2D
Не эталон быстродействия, но зато просто и понятно.
__________________
тонкий тролль, осеянный благодатью

Старый 23.04.2011, 21:32
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 6  
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
Код AS3:
this.myArray = this.newArray2D(5, 7);
Зачем здесь "this" используется?
__________________
hauts.ru

Старый 23.04.2011, 21:44
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 7  
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Просто привык всегда явно указывать область видимости, а то иногда читаю чужой код и думаю: толи это локальная переменная, толи свойство объекта, толи статическое свойство класса, толи вообще какая-нибудь глобальная константа.
Да, я знаю про то, что все нормальные IDE умеют показывать подсказку с контекстом объявления переменной. Но если нужно понять логику работы какого-нибудь большого класса, и приходится быстро проглядывать много кода, то целиться по каждой непонятной переменной и кликать либо ждать появления подсказки - это убиться.
__________________
тонкий тролль, осеянный благодатью


Последний раз редактировалось Gaen; 23.04.2011 в 21:47.
Старый 23.04.2011, 22:23
honest_man вне форума Посмотреть профиль Отправить личное сообщение для honest_man Найти все сообщения от honest_man
  № 8  
honest_man

Регистрация: Aug 2010
Сообщений: 86
GAIKER, отличная привычка. У себя вырабатывал такую долгое время. Зато читается намного легче. =)

Старый 24.04.2011, 00:16
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 9  
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
Хм. По-моему это не есть хорошо, писать this где не нужно по смыслу.
__________________
hauts.ru

Старый 24.04.2011, 00:22
Bgg вне форума Посмотреть профиль Отправить личное сообщение для Bgg Найти все сообщения от Bgg
  № 10  
Bgg
 
Аватар для Bgg

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
Так смысла то два у this: 1. улучшение читабельности кода 2. указание конкретной области видимости.

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

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

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


 


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


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