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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 06.04.2007, 23:20
goder вне форума Посмотреть профиль Отправить личное сообщение для goder Найти все сообщения от goder
  № 1  
Ответить с цитированием
goder
[+3 24.04.07]

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

Приветствую всех втала такая проблема может кто подскажет или кто то сталкивался
Мне надо сделать функцию которая будет просматривать массив с n вложении массиввов тее мсив может быть такой для примера
Код:
var a1:Array=new Array;
var a2:Array=new Array;
var a3:Array=new Array;
a3[0]=1;
a3[1]=1;
a3[3]=1;
a2[0]=a3;
a2[1]=a3;
a1[0]=a2;
a1[1]=a2;
уровень вложености не известен вот не пойму как организовать вункцию чтоба она просмотрела весь массив по элементам устроит решение если даже пойдет циклический перебор
помогите плиз



если ктото спросит ля чего это нужно отвечу будут приходить данный в xml формате надо правильно его разобрать
тее вложеность может быть на уровне 120 елементов

Старый 07.04.2007, 00:54
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Рекурсия.

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

Регистрация: Feb 2007
Сообщений: 109
Отправить сообщение для DanQuimby с помощью ICQ
__etc как всегда краток
goder если не понятно , пиши в личку обьясню
более доходчивей у меня даже где то исходничек завалялся
по данной теме

Старый 07.04.2007, 10:54
Kikasso вне форума Посмотреть профиль Отправить личное сообщение для Kikasso Найти все сообщения от Kikasso
  № 4  
Ответить с цитированием
Kikasso
 
Аватар для Kikasso

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
120 уровней - это очень много. Так ли надо его разбирать?

Старый 07.04.2007, 14:32
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 5  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Рекурсия работает до 256 уровней.

Старый 10.04.2007, 02:21
goder вне форума Посмотреть профиль Отправить личное сообщение для goder Найти все сообщения от goder
  № 6  
Ответить с цитированием
goder
[+3 24.04.07]

Регистрация: Apr 2007
Сообщений: 38
ДА я пишу он лайн игру в бою все параметры у меня будут приходить в xml Вот и может в неготорых местах вложение до 120 уровня
зато быстрый способ я перед отправкой xml пакую его в swf

Старый 10.04.2007, 02:39
Kikasso вне форума Посмотреть профиль Отправить личное сообщение для Kikasso Найти все сообщения от Kikasso
  № 7  
Ответить с цитированием
Kikasso
 
Аватар для Kikasso

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
Есть вариант - Flash Remoting.

Старый 10.04.2007, 03:03
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 8  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
И чего там такого может быть до 120-го уровня, а?

Старый 10.04.2007, 16:38
goder вне форума Посмотреть профиль Отправить личное сообщение для goder Найти все сообщения от goder
  № 9  
Ответить с цитированием
goder
[+3 24.04.07]

Регистрация: Apr 2007
Сообщений: 38
Цитата:
Сообщение от __etc
И чего там такого может быть до 120-го уровня, а?
Да уменя туда передаются параметры все я на космическую тему пишу и туда уходят параметры о корабла о состояние каждой веши и т.п
да кстати я написал еще быстрее способ я так думаю может кому тоже поможет
Позже перекатаю в отдельный клась и сделаю небольшое FAQ
вот кодик работает на LoadVars
но делает конвертацию
в структуру flash
пока работает конвертация в массивы
распознание типа переменной пока три типа(основные): Objeckt (тее ссылка), String, Integer
В массивах допускаяется вложенность

Код:
var js:LoadVars = new LoadVars();
var array_string:Array = new Array();
js.onData = function(src:String)
{
	var tekst:String = src;
	if (tekst == undefined)
	{
		trace("Ошибка загрузки данных.");
		return;
	}
	else
	{
		js.decode(src);
		tekst = this["<"];
		var formir:Array = tekst.split(";");
		for (var i = 0; i < formir.length; i++)
		{
			array_string[i] = crate_class_peremen(formir[i]);
		}
		for (var i = 0; i < array_string.length; i++)
		{
			if (array_string[i].class_peremen == "Object" && (array_string[i].value_peremen == "Array()" || array_string[i].value_peremen == "array()" || array_string[i].value_peremen == "[]"))
			{
				set(array_string[i].name_peremen, new Array());
				_root[array_string[i].name_peremen][0] = "aa";
			}
			else
			{
				if (array_string[i].index_peremen <> "" && array_string[i].class_peremen <> "Object")
				{
					_root[array_string[i].name_peremen][Math.round(array_string[i].index_peremen)] = array_string[i].value_peremen;
				}
				else
				{
					if (array_string[i].class_peremen == "Object")
					{
						if (array_string[i].index_peremen <> "")
						{
							//trace(array_string[i].value_peremen)
							_root[array_string[i].name_peremen][Math.round(array_string[i].index_peremen)] = _root[array_string[i].value_peremen];
						}
						else
						{
							set(array_string[i].name_peremen, _root[array_string[i].value_peremen]);
						}
					}
					else
					{
						if(array_string[i].class_peremen =="integer")
						{
							set(array_string[i].name_peremen, Math.round(array_string[i].value_peremen));
						}
						else
						{
						set(array_string[i].name_peremen, array_string[i].value_peremen);
						}
					}
				}
			}
		}
		//trace(asd);
	}
	delete array_string
	delete js
};
js.load("test.html");
function crate_class_peremen(str:String)
{
	var contruct_var:Array = new Array();
	// тип переменой
	contruct_var["class_peremen"] = "";
	// имя переменной
	contruct_var["name_peremen"] = "";
	//значение переменной
	contruct_var["value_peremen"] = "";
	//индекс если массив 
	contruct_var["index_peremen"] = "";
	var peremen:String = new String();
	var znac:String = new String();
	var class_peremen:String = new String();
	var index = "";
	var Tmp:String = new String();
	ch = 0;
	ind = 0;
	for (var s = 0; s < str.length; s++)
	{
		Tmp = str.charAt(s);
		if (Tmp == "\\")
		{
		}
		else
		{
			if (Tmp == "\n" || Tmp == "\r")
			{
				Tmp = "";
			}
			else
			{
				if (ch == 0)
				{
					if (str.charAt(s) == "=")
					{
						ch = 1;
						Tmp = "";
					}
					else
					{
						if (str.charAt(s) == "[")
						{
							ind = 1;
							Tmp = "";
						}
						else
						{
							if (ind == 1)
							{
								if (str.charAt(s) == "]")
								{
									ind = 0;
									Tmp = "";
								}
								else
								{
									index = "" + index + Tmp;
								}
							}
							else
							{
								peremen = peremen + Tmp;
							}
						}
					}
				}
				else
				{
					znac = znac + Tmp;
				}
			}
		}
	}
	string = 0;
	object = 1;
	integer=0;
	tmp_str = "";
	if (znac.charAt(0) == "\"" && znac.charAt(znac.length - 1) == "\"")
	{
		string = 1;
		object = 0;
		znac = znac.slice(1, znac.length - 1);
	}
	if (isNaN(znac)==false)
	{
		string = 0;
	object = 0;
	integer=1;
	}
	if (string == 1)
	{
		class_peremen = "string";
	}
	if (integer == 1)
	{
		class_peremen = "integer";
	}
	if (object == 1)
	{
		class_peremen = "Object";
	}
	// тип переменой      
	contruct_var["class_peremen"] = class_peremen;
	// имя переменной
	contruct_var["name_peremen"] = peremen;
	//значение переменной
	contruct_var["value_peremen"] = znac;
	//индекс если массив 
	contruct_var["index_peremen"] = index;
	return contruct_var;
}
А вот какой текст должен у вас генерить рнр или вы сами тут без разницы главное чтобы начинался с такого знака "<="
Код:
<=
asd=array();
asd[0]="s";
asd[1]="\"s\"";
as="\"sd\"";
asd[2]=as;
newar=[];
newar[0]="qwe";
newar[1]="qwsse";
asd[3]=newar;
sd=as;
inter=456878;
Думаю тут понятно ну и еще
обязательно каждая строка должена заканчиватся на ";"


Последний раз редактировалось goder; 10.04.2007 в 17:18.
Старый 10.04.2007, 17:28
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 10  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Мне кажется, у вас явная ошибка в проектировании и недостаток знания языка.

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

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

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


 


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


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