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

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

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

Регистрация: Mar 2003
Адрес: moscow
Сообщений: 102
Отправить сообщение для uglan с помощью ICQ Отправить сообщение для uglan с помощью Skype™
По умолчанию Трехмерный массив с подобъектами

Доброго времени суток!
Подскажите, пожалуйста, как мне замутить трехмерный массивчик с вложенными объектами?
Пример(просто сам алгоритм):
a[0] = "aga";
a[0][0]="ugu";
a[0][1]="ugu2";
a[0][1][0].name = "ege";
a[0][1][0].num = 10;
a[0][1][0].txt = "bla bla bla";

при этом каким-то образом желательно получать объем каждого массива в отдельности. То есть a[].length = 1,a[][].length=2,a[][][].length=0.

p.s. Темно уже на улице, может и туплю чего не обессудьте))
__________________
uglan

Старый 26.06.2008, 02:25
MrPoma вне форума Посмотреть профиль Отправить личное сообщение для MrPoma Посетить домашнюю страницу MrPoma Найти все сообщения от MrPoma
  № 2  
Ответить с цитированием
MrPoma
 
Аватар для MrPoma

Регистрация: Jul 2006
Адрес: Питер
Сообщений: 2,083
Отправить сообщение для MrPoma с помощью Skype™
Ну и в чем проблема?
__________________
жж | твттр | гглплс | фсбк | вкнткт | гтхб

Старый 26.06.2008, 11:29
Alex_beginner вне форума Посмотреть профиль Отправить личное сообщение для Alex_beginner Найти все сообщения от Alex_beginner
  № 3  
Ответить с цитированием
Alex_beginner
 
Аватар для Alex_beginner

Регистрация: May 2008
Сообщений: 476
Здравствуйте uglan!

Мне не совсем понятна целесообразность конструкций:

Цитата:
Код:
a[0] = "aga";
a[0][0]="ugu";
a[0][1]="ugu2";
a[0][1][0].name = "ege";
a[0][1][0].num = 10;
a[0][1][0].txt = "bla bla bla";
В особенности последние строчки.

А вообще многомерный массив можно создать с использованием литерала, пример:

Код:
var a:Array = [["aga","ugu"],["ege","uau","oh"]];
Причем обращение
Код:
a[0]
будет ссылаться не на один единственный элемент массива, а на массив ["aga","ugu"] и поэтому присвоив
Код:
a[0] = "aga"
вы замените массив ["aga","ugu"] на "aga".

Теперь, если Вы хотите вложить объект (скажем инстанцию Object) в трехмерный массив лучше сделать это так:

Код:
a[0][0][0] = {name:"ege", num:10, txt:"bla bla bla"}
или так

Код:
a[0][0][0] = new Object();
a[0][0][0].name = "ege"
...
...
__________________
Случайность, господа, это знаете ли непознанная необходимость.


Последний раз редактировалось Alex_beginner; 26.06.2008 в 11:31.
Старый 26.06.2008, 11:38
uglan вне форума Посмотреть профиль Отправить личное сообщение для uglan Посетить домашнюю страницу uglan Найти все сообщения от uglan
  № 4  
Ответить с цитированием
uglan

Регистрация: Mar 2003
Адрес: moscow
Сообщений: 102
Отправить сообщение для uglan с помощью ICQ Отправить сообщение для uglan с помощью Skype™
Проблема в том что даже двумерный массив такого вида ничего не возвращает:

Код:
var a=new Array();

a[0] = "aga";
trace(a[0]);
результат "aga"

Код:
a[0][0] = "ugu"
trace(a[0][0]);
результат undefined

Код:
a[0][0][0] = new Object();
a[0][0][0].name = "ege"

trace(a[0][0][0].name);
результат undefined
__________________
uglan

Старый 26.06.2008, 11:47
uglan вне форума Посмотреть профиль Отправить личное сообщение для uglan Посетить домашнюю страницу uglan Найти все сообщения от uglan
  № 5  
Ответить с цитированием
uglan

Регистрация: Mar 2003
Адрес: moscow
Сообщений: 102
Отправить сообщение для uglan с помощью ICQ Отправить сообщение для uglan с помощью Skype™
А подобный вид
Код:
var a:Array =new Array();

a[0] = "aga";
trace(a[0]);

a[[0],[0]] = "ugu"
trace(a[[0],[0]]+"/"+a[[0],[0]].length);
не корректно возвращает длинну вложенного массива. В данном случае 3. То же значение вернет trace(a[0].length);
-------------------------------------
Объясню для чего мне это нужно. Мне нужна некая трехуровневая структура иерархического типа в которой будут храниться данные. Причем класс на каждом уровне может быть разный.
Пример:

FirstLevel1(name - "FLevel1")
--SecondLevel1(name - "SLevel1")
----ThirdLevel1(name = "TLevel1",desc="desc TLevel1",index="1" и т.д.)
----ThirdLevel2(name = "TLevel1",desc="desc TLevel1",index="1" и т.д.)
----ThirdLevel3(name = "TLevel1",desc="desc TLevel1",index="1" и т.д.)
----ThirdLevel4(name = "TLevel1",desc="desc TLevel1",index="1" и т.д.)
--SecondLevel2(name - "SLevel2")
----ThirdLevel1(name = "TLevel1",desc="desc TLevel1",index="1" и т.д.)
----ThirdLevel2(name = "TLevel1",desc="desc TLevel1",index="1" и т.д.)
--SecondLevel2
--SecondLevel3

Структура создается динамически, поэтому изначально нельзя определить размер массива.
__________________
uglan


Последний раз редактировалось uglan; 26.06.2008 в 11:57.
Старый 26.06.2008, 11:56
Alex_beginner вне форума Посмотреть профиль Отправить личное сообщение для Alex_beginner Найти все сообщения от Alex_beginner
  № 6  
Ответить с цитированием
Alex_beginner
 
Аватар для Alex_beginner

Регистрация: May 2008
Сообщений: 476
uglan! Вы поймите следущее. Если Вы создали массив это не значит, что в каждой ячейке его можно создать свойство и присвоить ему значение. Это можно сделать только после создания инстанции Object в ячеке массива.

Сделайте так:

в этом примере
Цитата:
Код:
a[0][0] = "ugu"
trace(a[0][0]);
поменяйте так:
Код:
var a:Array = [[],[]];
a[0][0] = "ugu"
trace(a[0][0])
В любом случае Вы не можете динамически менять размерность массива не теряя записанных на предыдущем этапе значений.
__________________
Случайность, господа, это знаете ли непознанная необходимость.


Последний раз редактировалось Alex_beginner; 26.06.2008 в 12:05.
Старый 26.06.2008, 12:00
uglan вне форума Посмотреть профиль Отправить личное сообщение для uglan Посетить домашнюю страницу uglan Найти все сообщения от uglan
  № 7  
Ответить с цитированием
uglan

Регистрация: Mar 2003
Адрес: moscow
Сообщений: 102
Отправить сообщение для uglan с помощью ICQ Отправить сообщение для uglan с помощью Skype™
А вот так не работает.
Код:
var a:Array = [[],[],[]];
a[0][0][0] = "ugu"
trace(a[0][0][0])
undefined

И опять таки вот такой код
Код:
var a:Array = [[],[]];
a[0][0] = "ugu"
trace(a[0][0].length);
Не возвращает нужного значения.
__________________
uglan

Старый 26.06.2008, 12:03
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 8  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
uglan, а почему вы не хотите использовать xml для хранения того, что вы называете
"трехуровневая структура иерархического типа "?

Старый 26.06.2008, 12:05
uglan вне форума Посмотреть профиль Отправить личное сообщение для uglan Посетить домашнюю страницу uglan Найти все сообщения от uglan
  № 9  
Ответить с цитированием
uglan

Регистрация: Mar 2003
Адрес: moscow
Сообщений: 102
Отправить сообщение для uglan с помощью ICQ Отправить сообщение для uglan с помощью Skype™
Мне кажется массив удобнее(без заморочки с кучей childNodes), если он вообще может работать с тройной структурой.
__________________
uglan

Старый 26.06.2008, 12:06
qazwsx вне форума Посмотреть профиль Найти все сообщения от qazwsx
  № 10  
Ответить с цитированием
qazwsx
Banned
[+5 15.02.09]
[++5 15.02.09]

Регистрация: Mar 2008
Адрес: Krasnoyarsk
Сообщений: 587
Код:
var a:Array = [];
a[0] = [];
a[0][0] = ':Q';
trace(a[0][0]);

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

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

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


 


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


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