![]() |
Вопрос по LSO (Local Shared Objects)
Єт мы... И Мы просим помощи
Формулировка задачи: Есть флєшка которая отрисовует много объектов, которые географически должны быть привязаны к карте. Все объекты описаны в ХМЛ-конфигурационном файле. Задача: с помощью ТОЛЬКО средств флэша, сделать так, чтобы я мог требуемый объект переносить в нужное место на карте, и его положение (координаты) сохранялись в ХМЛ-конфиге. Решение: Как я понимаю это реализуется с помощью LSO (Local Shared Objects). 1 этап - Отрисовка самих объектов (из ХМЛ-конфига) 2 этап - при помощи Драг*Дроп позиционирование 3 этап - сохранение позиции в нужной месте ХМЛ-конфига. 1 этап я решил, 2 - решаю... А вот по поводу 3-го даже никаких идей нет.... Ведь как я понял Этот метод просто сохраняет данные в файлах.. а мне надо-то не просто сохранить - а сохранить именно в нужном месте, и ничего не поломать при этом..... Вопрос кажется не заезжен... пока.. так что будем ждать помощи зала . Благодарю авансом... __________________ "...время забыть, то кем ты был, но помнить кем ты стал..." |
по моему вопрос о сохронении во внешний файл поднимался 1000 раз ну ни как это зделать нельзя при помощи одного флеша Единственное что может делать флеш записовать инормацию в кукес(если это можно так назвать) при помощи класа LocalConnection
|
Да.
... язнаю.. Знаю, что сохранить можно в "кукиё"
с помощью ShareObjects.... Но может можно сохранять так, чтобы потом с этим "кукиё" можно было работать как с ХМЛ-файлом? Как бы так сохранить в этом "кукиё" структуру ХМЛ-дерева... И ОЧЕНЬ Желательно, чтобы я мог задать его имя (типа config.xml ) - ЭТО РЕАЛЬНО????? Это Вот и есть самый вопрос.. просто я счас читаю в книге о LSO - что-то не вижу ничего похожего....Может есть какая недокументированая возможность??? Ну если нет возможности - то ... жаль.. :(((((( ____________________________________ "...в сердце - Мертвая Зона..." |
ShareObjects.... не предусматривает сохронение XML дерева но веть эту проблему можно решить (Если дерево не очень сложное и тип данных повторяется ) сохроннием переменых например
Код:
var1ObjectNum1_x ObjectNum1_y ObjectNum2_x ObjectNum2_y ......... ObjectNumn_x ObjectNumn_y не чего другого посоветовать не могу ну кроме того что можно использовать PHP да если тебе это поможет то обект CustomActions предусматривает сохронение в XML (правдо в момент разроботки клипа :)) |
угу....
...Ясно.
Это не тот случай, дерево - НАМНОГО СЛОЖНЕЕ, чем твой кусочек кода :-)) Вот такое оно - (это только малый кусочек его. ____________________________________________ <?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.. все равно спасибо, за помощь. ___________________________ "...лунный свет хозяин твой..." |
В Shared можно сохранять любой объект, в том числе и XML, я тут грабли в другом вижу - если у тебя объектов много, то и метаописание будет большое - в 100кб уместишься? Надо обязательно отслеживать объём твоего конфига и корректно обрабатывать переполнение.
ЗЫ Хотя это всегда надо делать:) |
ну дак тамже есть myLocalSharedObject.getSize()
а проследить не долго Код:
doc = new XML("<bla><p x='1'y='1'/><p x='2'y='2'/><p x='3'y='3'/></bla>"); |
LSO всегда сохраняет данные в текстовом формате. Но из текстового формата легко сделать XML.
И нет ничего страшного, если будет больше 100кб Появится флэшовое сообщение. Ну и что? Просто об этом нужно юзера предупредить и объяснить что это и зачем. Те кому надо - согласятся. Не надо - работаем без сохранения. Все просто. |
Вот пришла в голову мысля, попробовал, получилось.
Не факт, что подойдет в данном случае, но а вдруг... Смысл затеи в том, чтобы минимизировать объем данных, которые требуется сохранить. Принцип такой: Сохраняем не сам 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); |
я навернео в хронол. порядке:
2 BitSky, FreeLander То, что больше будет чем 100 кубиков - действительн не так страшно, так как изменения в ХМЛ из флэша планируется, что будет вносить 1-2 человека.. - ( это как бы админская часть!). Но вот как перевести текстовый формат в ХМЛ -это что-то совсем не понятно!!! легко? (может покажешь или расскажешь трошки подробнее??:?:?) Идея насчет сохранения ТОЛЬКО ИЗМЕНЕННЫХ (ну или ИЗМЕНЯЕМЫХ) ДАННЫХ - мне нравится. Я правда в АС не оч. силен и этот скрипт тяжеловат пока для моего восприятия, но я разберусь, обязательно!!! Я правда сегодня не могу разобраться - проект недостпен, но завтра - вплотную займусь анализом. А может кто еще какую-нить идейку подбросит :-)))) БЛАГОДАРЮ ЗА ПОМОЩЬ. __________________________ "...но яркий луч вспыхнет во тьме и покорность выбьет мигом...." |
по ходу дела выясняется, что все не так как представлялось вначале.
раз часть админская, значит можно смело юзать exe файл со всеми вытекающими возможностями. а именно: fscommand("exec", ........) а это значит очень так простенько можно написать батничек и отдавать ему xml для сохранения где угодно. и вообще для любых действий. |
Зачем ещё один ввелосипед?
Flash+php+mySql = любая админка.. И не говорите мне, что задача стоит сделать всё с помощью флэш - это элементарная лень. ЗЫ Если уж есть желание сделать всё с поиощью флэш - юзайте Flash Communication Server (для шестёрки) или Flash Communication Scripts (для семёрки) |
Цитата:
|
Эх ... мужики...
.. Дело в том, что я кроме АС это единственный яз. который я знаю :( .. пока что.
Вот и хотелось бы решить задачу тем, что я умею, а не изучать две новые технологии - так же быстрее будет! (ограничение по времени начинает брать за горло!!!) А эта особенность - единственная, связанная с записью, которая должна быть. У меня вообще весь проект должен взаимодействовать с миром ТОЛЬКО через ХМЛ-конфиг. Bitsky - насчет батника, можешь пример показать ?? (а еще лучше документы или ссылки на них... если можно - то на велико-могучем) Хотя лучше было бы использовать для всех операций один и тот же файл. (ну мне так кажется.) Didndin: flash - я трошки знаю, а php и mysql - абс. незнаком.... Flash Communication Scripts - говоришь... попробую разобраться. (сразу та же просьба по поводу сопутсвующей документации(особенно на РАШН) - если не тяжело каэшно.) З.Ы.: BitSky - так как конвертануть *.тхт в *.хмл ? ЗЗЫ: пока ответил - Nox Noctis подключился ... так получается нельзя передавать параметры бат-файлу? Может ты подскажешь якесь piшення этой задачи? (Ну это - сохранение изменений в ХМL-файле из флэша.. Ну я там выше уже живописал подробно.) Дякую за домопогу. __________________________________________ "...против движенья иду один, нарушив условность границ..." |
urca, web-development занятие, требующее либо опыта, либо времени, либо денег. Выбирай.
|
если текстовые данные уж очень текстовые, то можно их конвертнуть в xml собственным парсером.
пример: Код:
Stage.scaleMode = "noscale" |
но я, когда говорил, что текстовые данные могут быть легко конвертированы в xml прежде всего имел ввиду, что сохранение в SO всегда происходит в текстовом формате.
Но данные сохраняются текстовом виде но в xml стандарте. И вытащить их легко простым ....parseXML(data) Расширение файла не имеет значения. Назови его хоть JPEG но внутри сделай текст, флэш его поймет пральна. |
я действительно очень давно не вошкался с fscommand("exec",...) и слету не готов поспорить :)
однако есть десятки альтернативных путей. что касается использования php+mysql, то как я понял, этот админ не сетевой а локальный. Т.е. сидит перец и у себя на компе колбасит какие - нибудь карты объектов, а затем готовый xml подкладывает для отображалки. впрочем и это не мешает пользовать сервак. 2urca: подключай чела, который знает серверные дела. без этого не обойтись по ходу. |
Цитата:
просто я уж было подумал что проспал какую-то тему по этой части :) суть в том что после пятерки тому что вызывается через fscommand("exec",...) никак не передать параметр. вообще. так что надо джагглор и иже с ним :) |
Цитата:
|
ууу...
не будем спорить пока неясен предмет спора, ладно? :)) |
4 BitSky
Насчет локального админа - так оно прибл-но и есть. Тут немного другая ситуация - человек, пишущий сервер-поддержку моего проекта, увольняется в пятницу и после этого моя программа никому нужна не будет... если не будет доведена до состояния бета-версии! 2 Dindin - только критика...а мне же нужна помощь. (я же сначала попробовал сам, потом только обратился сюда! Форум-то для этого и нужен, или я не прав?) Насчет *.тхт с душой *.хмл - ясно. __________________ "....ты ждал, что друг тебя поймет..." |
Цитата:
|
BitSky, ты меня заинтересовал.. И как же?
|
есть различные вариации
но в каждом конкретном случае это зависит от твоего предыдущего поста и фантазии переводчика %) |
Цитата:
К примеру - BitSky - небо с овчинку :):) |
флудеры нехорошие :)
щас будете сочинять сто способов вызвать екзешник :)) BitSky, а к чему ты этот мега-код запостил, если не секрет? :) какова целевая аудитория? :)) |
про парсер...
НИФИГАА СЕБЕ!!!!!!
ОГО! Слава богу это мне не нужно.. пока :-) Мои данные-то находятся в формате хмл - поэтому действительно расширение файлане так важно! ________________________________ "...мы бредим от удушья..." |
Цитата:
на самом деле такого уродливого меню как на livedocs у макромедии я не видел давно. вот и вошкался с тем, чтобы сделать свой просмотрщик livedocs. но бросил. |
1.Вы тут заговарили о запуске ехе с праметром, но как я знаю не в пятом не в любом другом флеше это нельзя сделать напрямую из флеша, допустим такая сторочка в пятке будет выполнена но даные не уйдут в экзешник.
Код:
2.Где то читал (не утверждаю что реально) какието рукодельци писали драйвер для принтера который получал данные из флеш (на локале) и заносил их в файл. |
извеняюсь
Код:
fscommand ("exec", "any.exe\tparameter"); |
Вложений: 1
Вот написал исходничек если я ошибаюсь (с передачай порамтра в 5 флеше ) то проблема с записью в xml решена :)
|
Долго не мог дотянуться до своего проекта...
2 орех:
может я чего-то не понимаю. что в твоем исходнике может помочь мне с записью в ХМЛ-конфиг?? Ничего что-то он не пишет...Я меня вообще-то 7-ка МХ. так что может изза этого??? А еще как оказалось КАЖДЫЙ юзер должен иметь возможность редактировать ХМЛ-конфиг..... только обычный юзер может редактировать только 1-2 поля (снять/поставить объект на охрану) а АДМИН-ы (их около 3) - имеют full-contact. точнее такая задумка... Но вот сделать пока не выходит.. :((( А можно ли как бы на сервере LSO в файл сохранять, а не на локальной тачке? ______________ "...но выйти вон и сам не прочь..." |
Не надо изобретать велосипед. Такие вещи делаются трехзвенкой - flash+PHP+mySQL. Flash вообще-то предназначен для разработки клиентских приложений и напрямую с сервером работать не может.
|
Ну надоел этот DinDin.... спасу нет!
Специально для DinDin-а
Я же уже говорил - МОЯ ФЛЭШЬ - ВЗАИМОДЕЙСТВУЕТ С ОСТАЛЬНЫМИ ПРИЛОЖЕНИЯМИ ТОЛЬКО ЧЕРЕЗ ХМЛ-конфигурационный файл!!! при чем здесь MySql ???? Далее - серверная поддержка моего проекта будет (ой будет ли??) осуществляться на языке Perl. То есть РНР - тоже не то, что надо!!!!! Да, возможно ты и прав, что без помощи другой технологии не обойтись, но зачем тогда ты советуешь не 1, а 2????? Насколько я понимаю - Муsql - это для обработки баз данных. НО ВЕДЬ МОЯ БАЗА - ЭТО ХМЛ-файл!!! Ну не нужен здесь этот MySql (твой эСКуэЛь)!!!! Ну клиентские приложения-то работают с сервером -- посылают и принимают данные! Пшеропрошую за некоторую резкость. ______________________________ ".....ты помнишь...." |
Подробно и пошагово.
1) Flash в чистом виде не предназначен для разработки серверных приложений. Его назначение - организация приложения-клиента (надеюсь, это споров не вызовет) Из этого следует: 2) любая попытка сохранить данные на сервере (не на локальной машине, а на сервере) требует использования внешнего модуля, который, собственно, и сохраняет данные. Вариантов внешнего модуля множество - CGI - скрипт (например на Perl), php-модуль, ASP - модуль, сервер приложений Macromedia ColdFusion, служба приложений Flash Remouting и так далее. 3) На собственном опыте (уверяю, не маленьком) я убедился, что любая попытка создать собственный формат данных в некотором файле (в твоём случае - это XML с определённой структурой) приводит к дальнейшей необходимости написания парсера для каждого нового приложения, которое будет работать с этим форматом данных. Я не спорю, что это один из вариантов, но в своё время я от него отказался именно по причине трудоёмкости дальнёшего расширения проекта. Для использования в Java, например, пришлось писать XML-парсер на Java, для обработки PHP-модулем - парсер на PHP. В итоге я лично пришёл к выводу, что mySQL -база является оптимальным выходом, поскольку большинство приложений (PHP, Java - в т.ч. JSP, ColdFusion, и т.д.) могут обращаться к базе напрямую, минуя дополнительные звенья, что значительно сокращает объём работ. Так что совет использовать трёхзвенку это не мой каприз, а "опыт, сын ошибок трудных" 4)если ты всё-же решился работать с сервером через CGI - интерфейс посредством перловых скриптов, то мне не совсем понятно - в чём твоя проблема? Твоя задача - просто сформировать во Flash xml-документ и отправить его в cgi, где перловый скрипт просто запишет получившийся xml в заданную локацию. Правда, в этом случае, возникает проблема: для каждого следующего xml придётся задавать новую локацию (ах, как всё это легко решалось бы в mySQL - просто новая запись в таблице). Здесь уже всё зависит от твоей фантазии.Можно сортировать по папкам.Можно создавать каждый раз новые файлы с уникальными именами (можно даже дописывать новые конфигурации в тот же файл). Но здесь мого подводных камней - при дописывании в один файл для выборки данных придётся производить обработку всего xml-файла. То есть тот самый "принцип толстого клиента". При создани новых файлов необходимо задавать структуру соответствий пользователь - путь к файлу (опять напрашивается mySQL), которую тоже придётся где-то хранить. Резюме: Как не крути, а более простого и удобного способа хранения структурированных данных в WEB, чем чем базы данных пока нет. ЗЫ На резкозть я не обижаюсь, она, как правило плод недопонимания :) |
В том-то и все дело!
.. Что:
1) я и разрабатываю в осоновном клиентское приложение, просто как оказалось клиент имеет право редактировать конфиг-файл! !!!2) - А вот это я и пытался выяснить - можно ли не использовать серверный модуль какой-либо технологии !! 3) Моя задача не для Веба делается, следовательно не будет попыток считать мой конфиг разноплановыми технологиями. И именно поэтому желательно обойтись минимумом технологий! (одно из требований - минимальная длина цепочки!) !!!!!4) Хорошая ИДЕЯ!!!!!! - Вот так я наверное и поступлю! _______________________ "....не покидать корабль!" |
| Часовой пояс GMT +4, время: 06:39. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.