Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   Вопрос по LSO (Local Shared Objects) (http://www.flasher.ru/forum/showthread.php?t=58836)

urca 31.05.2004 03:33

Вопрос по LSO (Local Shared Objects)
 
Єт мы... И Мы просим помощи


Формулировка задачи:

Есть флєшка которая отрисовует много объектов, которые географически должны быть
привязаны к карте.
Все объекты описаны в ХМЛ-конфигурационном файле.

Задача: с помощью ТОЛЬКО средств флэша, сделать так, чтобы я мог требуемый объект
переносить в нужное место на карте,
и его положение (координаты) сохранялись в ХМЛ-конфиге.

Решение: Как я понимаю это реализуется с помощью LSO (Local Shared Objects).
1 этап - Отрисовка самих объектов (из ХМЛ-конфига)
2 этап - при помощи Драг*Дроп позиционирование
3 этап - сохранение позиции в нужной месте ХМЛ-конфига.

1 этап я решил,
2 - решаю...

А вот по поводу 3-го даже никаких идей нет....
Ведь как я понял Этот метод просто сохраняет данные в файлах.. а мне надо-то не просто сохранить - а сохранить именно в нужном месте, и ничего не поломать при этом.....

Вопрос кажется не заезжен... пока.. так что будем ждать помощи зала .

Благодарю авансом...
__________________
"...время забыть, то кем ты был, но помнить кем ты стал..."

opex 31.05.2004 13:07

по моему вопрос о сохронении во внешний файл поднимался 1000 раз ну ни как это зделать нельзя при помощи одного флеша Единственное что может делать флеш записовать инормацию в кукес(если это можно так назвать) при помощи класа LocalConnection

urca 01.06.2004 11:02

Да.
 
... язнаю.. Знаю, что сохранить можно в "кукиё"
с помощью ShareObjects....

Но может можно сохранять так, чтобы потом с этим "кукиё" можно было работать как с ХМЛ-файлом?

Как бы так сохранить в этом "кукиё" структуру ХМЛ-дерева...
И ОЧЕНЬ Желательно, чтобы я мог задать его имя
(типа config.xml ) - ЭТО РЕАЛЬНО?????

Это Вот и есть самый вопрос..
просто я счас читаю в книге о LSO - что-то не вижу ничего похожего....Может есть какая недокументированая возможность???

Ну если нет возможности - то ... жаль.. :((((((

____________________________________
"...в сердце - Мертвая Зона..."

opex 01.06.2004 12:05

ShareObjects.... не предусматривает сохронение XML дерева но веть эту проблему можно решить (Если дерево не очень сложное и тип данных повторяется ) сохроннием переменых например

Код:

var1
    var1_2
    var1_2
    var1_2
        var1_2_3
var2
  var2_2

я так понял тебе надо хронить координаты обектов твоё дерево может ввыглядеть вот так

ObjectNum1_x
ObjectNum1_y
ObjectNum2_x
ObjectNum2_y
.........
ObjectNumn_x
ObjectNumn_y


не чего другого посоветовать не могу ну кроме того что можно использовать PHP
да если тебе это поможет то обект CustomActions предусматривает сохронение в XML (правдо в момент разроботки клипа :))

urca 01.06.2004 12:46

угу....
 
...Ясно.
Это не тот случай, дерево - НАМНОГО СЛОЖНЕЕ, чем твой кусочек кода :-))
Вот такое оно - (это только малый кусочек его.

____________________________________________

<?xml version="1.0" encoding="utf-8"?>
<hgts val="HGTS">
<ats val="ATC-21" pict="1" c_x="20" c_y="5" state="c">
<route val="route-21" num="21" pict="2" c_x="525" c_y="100" state="c">
<oc val="OC">
<stoc val="Cтандартная ОС">
<stoc_koc val="KOC" num="210" pict="3" c_x="330" c_y="110" state="c">
<group_ooc val="все РШ" num="XX21">
<dc val="РШ" num="2102" pict="4" c_x="300" c_y="300" state="c">
<ld_ooc number_gauge="1" adress="пр-кт Московский 43" cross_st_para="23#15" para_on_ram="1#1" raz_koc="1#2" number_ns="358" prim="примечания"/>
<shema val="cхема выдачи сообщений" area="Двери РШ">
<shema_zn zn0="закрытие" zn1="закрытие" zn2="авария датчика" zn3="открытие"/>
</shema>
<mess val="последние_мессаги" area="штук так" num="5">
<history msg1="НС_открытие_1" msg2="НС_закрытие_1" msg3="НС_закрытие_2" msg4="НС_закрытие_3" msg5="С_закрытие_1"/>
</mess>
</dc>
<dc val="РШ" num="2103" pict="4" c_x="350" c_y="300" state="b">
<ld_ooc number_gauge="2" adress="пркт_Московский 31 2п." cross_st_para="14#99" para_on_ram="1_2" raz_koc="1#1" number_ns="361" prim="примечания"/>
<shema val="cхема выдачи сообщений" area="Двери РШ">
<shema_zn zn0="закрытие" zn1="закрытие" zn2="авария датчика" zn3="открытие"/>
</shema>
<mess val="последние_мессаги" area="штук_так" num="5">
<history msg1="НС_открытие_1" msg2="НС_закрытие_1" msg3="НС_закрытие_2" msg4="НС_закрытие_3" msg5="С_закрытие_1"/>
</mess>
</dc>
<dc val="РШ" num="2104" pict="4" c_x="400" c_y="300" state="a">
<ld_ooc number_gauge="4" adress="пр-кт Московский 38 2п." cross_st_para="28#35" para_on_ram="1_4" raz_koc="1#2" number_ns="301" prim="примечания"/>
<shema val="cхема выдачи сообщений" area="Двери РШ">
<shema_zn zn0="закрытие" zn1="закрытие" zn2="авария датчика" zn3="открытие"/>
</shema>
<mess val="последние_мессаги" area="штук так" num="5">
<history msg1="НС_открытие_1" msg2="НС_закрытие_1" msg3="НС_закрытие_2" msg4="НС_закрытие_3" msg5="С_закрытие_1"/>
</mess>
</dc>
<dc val="РШ" num="2105" pict="4" c_x="450" c_y="300" state="b">
<ld_ooc number_gauge="5" adress="ул. Юрьевская 8 Моск РИК" cross_st_para="43#90" para_on_ram="1_5" raz_koc="1#23" number_ns="348" prim="примечания"/>
............................................................
и так далее еще около (1-5)000 строк (будет - пока что только 400.
_________________________________

Но самое плохое - что надо чтобы я все (и новые значения тоже!) хранились в одном файле.
Так тчо наверное не выйдет .....Жаль!

Я понял - чисто Флэшом не получится.
Н0.. все равно спасибо, за помощь.

___________________________
"...лунный свет хозяин твой..."

FreeLander 01.06.2004 12:52

В Shared можно сохранять любой объект, в том числе и XML, я тут грабли в другом вижу - если у тебя объектов много, то и метаописание будет большое - в 100кб уместишься? Надо обязательно отслеживать объём твоего конфига и корректно обрабатывать переполнение.
ЗЫ Хотя это всегда надо делать:)

opex 01.06.2004 13:25

ну дак тамже есть myLocalSharedObject.getSize()
а проследить не долго

Код:

doc = new XML("<bla><p x='1'y='1'/><p x='2'y='2'/><p x='3'y='3'/></bla>");
doc.ignoreWhite = true;
//XML
trace("----------------XML--------------------");
x = doc.firstChild.childNodes;
for (i=0; i<x.length; i++) {
        trace(x[i].attributes.x+"  "+x[i].attributes.y);
}
//XML + sharedobject
so = sharedobject.getlocal("kookie");
trace("----------------XML + sharedobject-------");
so.data.xml = doc;
c = so.data.xml.firstChild.childNodes;
for (i=0; i<c.length; i++) {
        trace(c[i].attributes.x+"  "+c[i].attributes.y);
}

Я чтото стормазил да XML дерево можно сохранить

Iv 01.06.2004 15:10

LSO всегда сохраняет данные в текстовом формате. Но из текстового формата легко сделать XML.
И нет ничего страшного, если будет больше 100кб
Появится флэшовое сообщение. Ну и что? Просто об этом нужно юзера предупредить и объяснить что это и зачем.
Те кому надо - согласятся.
Не надо - работаем без сохранения. Все просто.

Iv 01.06.2004 15:53

Вот пришла в голову мысля, попробовал, получилось.
Не факт, что подойдет в данном случае, но а вдруг...
Смысл затеи в том, чтобы минимизировать объем данных, которые требуется сохранить. Принцип такой:
Сохраняем не сам XML, а его структуру и атрибуты, которые могут изменять свое значение (data_from_so). Причем имя узла соответствует номеру описания узла в массиве.
Имеем массив образцов узлов (nodes_array)
И обходя структуру so_xml создаем my_xml

короче говоря, скрипт:

nodes_array = ["<node n='0' arg='hello' />", "<another_node n='1' >"];
data_from_so = "<0 attribut='any value'><0><1></1></0><1><0><1></1></0></1></0>";
so_xml = new XML(data_from_so);
my_xml = new XML();
XMLNode.prototype.reBuild = function(source_node) {
if (source_node.firstChild == undefined) {
return;
}
var node = source_node.firstChild, n, a, i
while (node) {
this.appendChild(new XML(_root.nodes_array[node.nodeName]).firstChild);
n = this.lastChild;
a = node.attributes;
for (i in a) {
n.attributes[i] = a[i];
}
arguments.callee.call(n, node);
node = node.nextSibling;
}
};
my_xml.reBuild(so_xml);
trace(so_xml);
trace(my_xml);

urca 01.06.2004 20:45

я навернео в хронол. порядке:
2 BitSky, FreeLander
То, что больше будет чем 100 кубиков - действительн не так страшно, так как изменения в ХМЛ из флэша планируется, что будет вносить 1-2 человека.. - (
это как бы админская часть!).

Но вот как перевести текстовый формат в ХМЛ -это что-то совсем не понятно!!! легко? (может покажешь
или расскажешь трошки подробнее??:?:?)


Идея насчет сохранения ТОЛЬКО ИЗМЕНЕННЫХ (ну или ИЗМЕНЯЕМЫХ) ДАННЫХ - мне нравится.
Я правда в АС не оч. силен и этот скрипт тяжеловат пока для моего восприятия, но я разберусь, обязательно!!!

Я правда сегодня не могу разобраться - проект недостпен, но завтра - вплотную займусь анализом.
А может кто еще какую-нить идейку подбросит :-))))

БЛАГОДАРЮ ЗА ПОМОЩЬ.
__________________________
"...но яркий луч вспыхнет во тьме и покорность выбьет мигом...."


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

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