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

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

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

Регистрация: Jun 2010
Сообщений: 16
Question Многомерные массивы в AS 3.0

Здравствуйте, я совсем недавно начал изучать Action Script 3.0 и у меня появился такой вопрос как создать двумерный массив?

В руководстве от Adobe был такой пример:

Код AS3:
var masterTaskList:Array = new Array();
masterTaskList[0] = ["wash dishes", "take out trash"];
masterTaskList[1] = ["wash dishes", "pay bills"];
masterTaskList[2] = ["wash dishes", "dentist", "wash dog"];
masterTaskList[3] = ["wash dishes"];
masterTaskList[4] = ["wash dishes", "clean house"];
masterTaskList[5] = ["wash dishes", "wash car", "pay rent"];
masterTaskList[6] = ["mow lawn", "fix chair"];
Он описывает случай, когда заранее известно количество элементов массива, и их не так много что бы прописать каждый элемент руками. А как сделать например массив, размерность, которого может быть до 1000х1000, и при этом я не знаю сколько элементов мне потребуется в отдельном случае.

Заранее спасибо за ответ.

P.S. Извиняюсь, если дублирую тему... искал не нашел...

Старый 29.10.2010, 21:54
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 2  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Код AS3:
var i:uint;
var j:uint;
var arr:Array = [];
for (i = 0; i < 1000; i++) {
	arr[i] = [];
	for (j = 0; j < 1000; j++) {
		arr[i][j] = String(i) + "_" + String(j);
	}
}
__________________
тут я

Старый 29.10.2010, 21:59
van2tus вне форума Посмотреть профиль Отправить личное сообщение для van2tus Найти все сообщения от van2tus
  № 3  
Ответить с цитированием
van2tus

Регистрация: Jun 2010
Сообщений: 16
Спасибо )

Старый 15.11.2010, 21:17
goldlider вне форума Посмотреть профиль Отправить личное сообщение для goldlider Найти все сообщения от goldlider
  № 4  
Ответить с цитированием
goldlider

Регистрация: Jun 2010
Сообщений: 120
Дан такой код:

Код AS3:
const M_HEIGHT = 15; // Строка
const M_WIDTH = 20; // Столбец
 
function ABC():void
{
	massiv:Array = [];
	massiv.length = M_HEIGHT;
 
	for (var ay:int = 0; ay < M_HEIGHT, ay++)
	{
		massiv = [];
		massiv[ay].length = M_WIDTH;
 
		for (var ax:int = 0; ax < M_WIDTH, ax++)
		{
			massiv[ay][ax] = CELL_FREE // Какое-нибудь значение
		}
	}
}
Теперь вопросы:

1. Почему при инициализации нужно присвоить хотя бы какое-то значение ? В данном примере massiv:Array = []; Нельзя ли написать просто massiv:Array. Ведь в данном коде далее идет присвоение массиву значения massiv[ay][ax] = CELL_FREE.

2. Почему при задании длины массиву обращаться приходиться так massiv.length = M_HEIGHT;, а не так massiv[ay].length = M_HEIGHT;,

а вместо massiv[ay].length = M_WIDTH; вот так massiv[ax].length = M_WIDTH;

Старый 15.11.2010, 22:35
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 5  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Цитата:
1. Почему при инициализации нужно присвоить хотя бы какое-то значение ?
Потому что massiv:Array лишь типизирует переменную, но никак не говорит ей, что она новый массив.
Цитата:
2. Почему при задании длины массиву обращаться приходиться так massiv.length = M_HEIGHT;, а не так massiv[ay].length = M_HEIGHT;
В смысле? massiv - Это внешний массив, а massiv[ay] - внутренний, что непонятного?
Кроме того, massiv[ay] - это элемент массива massiv, а massiv[ay][ax] - элемент массива massiv[ay].
__________________
тут я


Последний раз редактировалось КорДум; 15.11.2010 в 22:39.
Старый 15.11.2010, 22:43
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 6  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
goldlider, где вы этот код выкопали?

Код:
const M_HEIGHT = 15; // Строка
const M_WIDTH = 20; // Столбец
 
function ABC():void
{
	var massiv:Array = [];
	massiv.length = M_HEIGHT;
 
	for (var ay:int = 0; ay < M_HEIGHT; ay++)
	{
		massiv = [];
		massiv[ay].length = M_WIDTH;
 		massiv[ay] = [];

		for (var ax:int = 0; ax < M_WIDTH; ax++)
		{
			massiv[ay][ax] = CELL_FREE // Какое-нибудь значение
		}
	}
}

Старый 15.11.2010, 22:55
goldlider вне форума Посмотреть профиль Отправить личное сообщение для goldlider Найти все сообщения от goldlider
  № 7  
Ответить с цитированием
goldlider

Регистрация: Jun 2010
Сообщений: 120
КорДум, Поправь меня если я не прав. Т.е. получается, что для задания длины одномерного массива мы используем запись massiv.length = 50; не используя никакие квадратные скобки.
А при вызове массива в цикле используется запись massiv[i]
Для двумерного массива мы используем запись massiv[j].length = 50; При вызове массива в цикле используется запись massiv[i,j]
Для трехмерного массива massiv[j,k] = 50; При вызове массива в цикле используется запись massiv[i,j,k]
Т.е. в квадратных скобках при задании длины пишется на одну переменную меньше.

Добавлено через 4 минуты
Цитата:
Сообщение от udaaff Посмотреть сообщение
goldlider, где вы этот код выкопали?

Код:
const M_HEIGHT = 15; // Строка
const M_WIDTH = 20; // Столбец
 
function ABC():void
{
	var massiv:Array = [];
	massiv.length = M_HEIGHT;
 
	for (var ay:int = 0; ay < M_HEIGHT; ay++)
	{
		massiv = [];
		massiv[ay].length = M_WIDTH;
 		massiv[ay] = [];

		for (var ax:int = 0; ax < M_WIDTH; ax++)
		{
			massiv[ay][ax] = CELL_FREE // Какое-нибудь значение
		}
	}
}
не важно. В нем все верно. Просто вопрос возник насчет массива. Это всего лишь часть кода.


Последний раз редактировалось goldlider; 15.11.2010 в 23:06.
Старый 15.11.2010, 23:03
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 8  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Да, так.
Цитата:
При вызове massiv[i,j,k]
Только пишите правильно - massiv[i][j][k]
Цитата:
Т.е. в квадратных скобках при указании длины пишется на одну переменную меньше.
Нужно понимать, что такое массив и элемент массива, являющийся массивом.
__________________
тут я

Старый 15.11.2010, 23:09
goldlider вне форума Посмотреть профиль Отправить личное сообщение для goldlider Найти все сообщения от goldlider
  № 9  
Ответить с цитированием
goldlider

Регистрация: Jun 2010
Сообщений: 120
Цитата:
Сообщение от КорДум Посмотреть сообщение
Да, так.

Только пишите правильно - massiv[i][j][k]

Нужно понимать, что такое массив и элемент массива, являющийся массивом.
Объясните на пальцах, что такое элемент массива, являющийся массивом ? Или же в какой книге это можно найти. В книге Мука подобное не нашел.

Старый 15.11.2010, 23:16
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 10  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
В ас3 нет многомерных массивов. Их можно сымитировать. В книге Мука как раз это и есть. 244 страница даже.
[ [], [], [], ..., [] ] - вот так имитируется двумерный массив. Его элементы - тоже массивы. Понятно теперь стало?
__________________
тут я

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

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

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


 


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


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