![]() |
|
||||||||||
|
|||||
|
[+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 елементов |
|
|||||
|
__etc как всегда краток
![]() goder если не понятно , пиши в личку обьясню ![]() более доходчивей у меня даже где то исходничек завалялсяпо данной теме |
|
|||||
|
Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
|
120 уровней - это очень много. Так ли надо его разбирать?
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Рекурсия работает до 256 уровней.
|
|
|||||
|
[+3 24.04.07]
Регистрация: Apr 2007
Сообщений: 38
|
ДА я пишу он лайн игру в бою все параметры у меня будут приходить в xml Вот и может в неготорых местах вложение до 120 уровня
![]() зато быстрый способ я перед отправкой xml пакую его в swf |
|
|||||
|
Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
|
Есть вариант - Flash Remoting.
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
И чего там такого может быть до 120-го уровня, а?
|
|
|||||
|
[+3 24.04.07]
Регистрация: Apr 2007
Сообщений: 38
|
Цитата:
да кстати я написал еще быстрее способ я так думаю может кому тоже поможет Позже перекатаю в отдельный клась и сделаю небольшое 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. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Мне кажется, у вас явная ошибка в проектировании и недостаток знания языка.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 04:59. |
|
|
« Предыдущая тема | Следующая тема » |
|
|