Форум 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 человека.. - (
это как бы админская часть!).

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


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

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

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

Iv 01.06.2004 21:08

по ходу дела выясняется, что все не так как представлялось вначале.

раз часть админская, значит можно смело юзать exe файл со всеми вытекающими возможностями.
а именно:
fscommand("exec", ........)
а это значит очень так простенько можно написать батничек и отдавать ему xml для сохранения где угодно.
и вообще для любых действий.

Dindin 01.06.2004 23:33

Зачем ещё один ввелосипед?
Flash+php+mySql = любая админка..
И не говорите мне, что задача стоит сделать всё с помощью флэш - это элементарная лень.
ЗЫ Если уж есть желание сделать всё с поиощью флэш - юзайте Flash Communication Server (для шестёрки) или Flash Communication Scripts (для семёрки)

Nox Noctis 02.06.2004 11:59

Цитата:

Оригинал написал(а) BitSky
и отдавать ему xml
ты знаешь как в любой версии проектра старше пятой передать параметр батнику через ехес? расскажи :)

urca 02.06.2004 12:42

Эх ... мужики...
 
.. Дело в том, что я кроме АС это единственный яз. который я знаю :( .. пока что.
Вот и хотелось бы решить задачу тем, что я умею, а не изучать две новые технологии - так же быстрее будет! (ограничение по времени начинает брать за горло!!!)

А эта особенность - единственная, связанная с записью, которая должна быть. У меня вообще весь проект должен взаимодействовать с миром ТОЛЬКО через ХМЛ-конфиг.


Bitsky - насчет батника, можешь пример показать ??
(а еще лучше документы или ссылки на них... если можно - то на велико-могучем)
Хотя лучше было бы использовать для всех операций один и тот же файл. (ну мне так кажется.)

Didndin:
flash - я трошки знаю, а php и mysql - абс. незнаком....
Flash Communication Scripts - говоришь... попробую разобраться. (сразу та же просьба по поводу сопутсвующей документации(особенно на РАШН) - если не тяжело каэшно.)

З.Ы.: BitSky - так как конвертануть *.тхт в *.хмл ?

ЗЗЫ: пока ответил - Nox Noctis подключился ...
так получается нельзя передавать параметры бат-файлу?
Может ты подскажешь якесь piшення этой задачи?
(Ну это - сохранение изменений в ХМL-файле из флэша.. Ну я там выше уже живописал подробно.)

Дякую за домопогу.
__________________________________________
"...против движенья иду один, нарушив условность границ..."

Dindin 02.06.2004 13:04

urca, web-development занятие, требующее либо опыта, либо времени, либо денег. Выбирай.

Iv 02.06.2004 13:21

если текстовые данные уж очень текстовые, то можно их конвертнуть в xml собственным парсером.
пример:
Код:

Stage.scaleMode = "noscale"
Stage.align = "TL"
// © Ivan Dembicki, dembicki@narod.ru
XMLNode.prototype.addProperty("nextNode", function () {
 if (this.firstChild != null) {return this.firstChild;}
 var n = this;
 while (n.nextSibling == null) {
  if (n.parentNode) {n = n.parentNode;} else {return null;}}
  return n.nextSibling;
}, null);
XMLNode.prototype.addProperty("nextNoChildNode", function () {
 var n = this;
 while (n.nextSibling == null) {
  if (n.parentNode) {n = n.parentNode;} else {return null;}}
  return n.nextSibling;
}, null);
//
_root.createTextField("preload_txt", 100, 200, 10, 200, 20)
toc_xml = new XML();
data_url="http://livedocs.macromedia.com/flash/mx2004/main/wwhdata/js/toc.js"
toc_xml.load(data_url);
data_url = "http://livedocs.macromedia.com/flash/mx2004/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=Flash_MX_2004_Documentation&file=01_docu2.htm#"
_root.preload_txt.text = "loading data..."
toc_xml.onData = function(s) {
_root.preload_txt.text = "parsing data..."
_root.build_arr(s.substr(45).split("\nvar ").join("\n"));
delete _root.toc_xml.onData;
delete _root.toc_xml;
};
_root.build_arr = function(s) {
// _root.t_txt.text = s
var arr = _root.arr=s.split("\n");
arr.pop();
var len = arr.length, limit;
var i = 0, n, a, b;
_root.onEnterFrame = function() {
limit = 100;
while (i<len && limit) {
n = arr[i]=arr[i].split("=");
a=arr[i].shift(), b=arr[i].join("=");
arr[i] = [a, b];
arr[i][1] = arr[i][1].split(".fN(").join("j-----j").split("\",\"").join("\"j-----j\"");
arr[i] = arr[i].join("j-----j").split("j-----j");
arr[i][arr[i].length-1] = arr[i][arr[i].length-1].split(");").join("");
if (arr[i].length != 4) {
trace(arr[i].length+">>>"+arr[i]);
}
i++, limit--;
}
if (i == len) {
delete this.onEnterFrame;
_root.build_xml(arr);

}
};
};
_root.build_xml = function(arr) {
var x = new XML(), node, s_node;
var i = -1, len = arr.length, n, url, aa, bb, last_root, last_node, dp, o_dp, path, to_node
while (++i<len) {
n = arr[i];
aa=n[0], bb=n[1];
if (bb == "P") {
node = x.createElement("n");
node.attributes.name = n[2].substr(1, n[2].length-2);
url = (n[3].substr(1, n[3].length-2)).split("#");
node.attributes.id=url[0], node.attributes.url=url[1];
dp = node.attributes.dp=0;
x.appendChild(node);
x[node.attributes.id]=node, last_node=node, o_dp=dp;
} else {
s_node = x.createElement("n");
s_node.attributes.name = n[2].substr(1, n[2].length-2);
s_node.attributes.url = n[3].substr(1, n[3].length-2);
url = (n[3].substr(1, n[3].length-2)).split("#");
s_node.attributes.id = url[0];
s_node.attributes.url = url[1];
dp = s_node.attributes.dp=bb.charCodeAt(0)-64;
path = dp-o_dp;
if (path == 0) {
to_node = last_node.parentNode;
} else if (path == 1) {
to_node = last_node;
} else if (path<0) {
path = "last_node"+(new Array(-path+2).join(".parentNode"));
to_node = eval(path);
if (!to_node) {
trace("error 0");
}
} else {
trace("error 1");
}
to_node.appendChild(s_node);
last_node = s_node;
o_dp = dp;
x[s_node.attributes.id] = s_node;
}
}
delete _root.arr;
_root.startAnalyseXML(x);
};
//////////////
_root.analyseXML = function(x) {
var node = x, a, n, cl, pn, dp1;
while (node && _root.k--) {
a = node.attributes;
n = a.name.split("  ").join(" ").split(" ");
if (!n[2].length || n[2].substr(0, 1) == "(") {
if (n[1] == "class" || n[1] == "object") {
cl = n[0];
// trace("childs moved: "+a.name);
pn=node, dp1=pn.attributes.dp+1;
node = node.nextSibling;
while (node.attributes.name.split(".")[0] == cl || node.attributes.name.split(".")[0] == "Simple"+cl) {
pn.appendChild(node);
node.attributes.dp = dp1;
node = node.nextNode;
}
node = pn.lastChild || pn;
}
}
node = node.nextNode;
if (node == undefined) {
return null;
}
}
return node;
};
_root.startAnalyseXML = function(x) {
var e_node = x;
_root.onEnterFrame = function() {
_root.k = 100;
e_node = _root.analyseXML(e_node);
if (!e_node) {
delete _root.k;
delete _root.onEnterFrame;
_root.preload_txt.text = "menu building..."
_root.createHelpMenu(x);
_root.preload_txt.text = "ready!"
}
};
};
///////////
this.getOpened = function() {
return this.attributes.opened || this.attributes.opened == "true";
};
this.setOpened = function(val) {
val = Boolean(val);
if (val) {
if (!this.parentNode.opened) {
this.parentNode.opened = true;
}
this.attributes.opened = true;
this.mc.openFolder(this.childNodes);
return;
}
delete this.attributes.opened;
this.mc.closeFolder(this.childNodes);
};
_root.createHelpMenu = function(x) {
var menu = _root.createEmptyMovieClip("menu", 0);
menu.__proto__ = _root.helpMenuItemClass.prototype;
menu._x = 10;
var node = x;
while (node) {
node.addProperty("opened", _root.getOpened, _root.setOpened), node=node.nextNode;
}
x.mc=menu, x.opened=true;
};
// helpMenuItemClass
_root.helpMenuItemClass = function() {
};
tmp = _root.helpMenuItemClass.prototype=new MovieClip();
tmp.addHelpItem = function(node) {
var mc = this.createEmptyMovieClip("it"+node.attributes.id, node.attributes.id);
mc.__proto__=_root.helpMenuItemClass.prototype, mc.init(node);
return mc;
};
tmp.init = function(node) {
this.node=node, node.mc=this, ASSetPropFlags(this, "node", 7, 1);
var mc = this.createEmptyMovieClip("mc", 0);
mc.onRelease = this.onMCRelease;
mc.createTextField("t_txt", 0, 0, 0, 5, 5);
var t = mc.t_txt;
t.autoSize=true, t.selectable=false, t.text=node.attributes.name;
if (this.node.opened) {
this.node.opened = true;
}
this.setPosition();
if (this.node.firstChild) {
this.reDraw();
}
};
tmp.onMCRelease = function() {
this._parent.node.opened = !this._parent.node.opened;
getURL(_root.data_url+this._parent.node.attributes.url, "_helpPage");
};
tmp.openFolder = function(arr) {
var i = 0, len = arr.length, mc;
for (i; i<len; i++) {
mc = this.addHelpItem(arr[i]);
}
this.node.nextNoChildNode.mc.onReposition();
};
tmp.closeFolder = function(arr) {
var i = 0, len = arr.length, mc, node;
for (i; i<len; i++) {
node = arr[i];
node.mc.removeMovieClip();
delete node.mc;
}
this.node.nextNoChildNode.mc.onReposition();
};
tmp.reDraw = function() {
this.clear(), this.lineStyle(3, 0xCCCCCC, 100), this.moveTo(-3, 9), this.lineTo(-3.2, 9);
};
tmp.setPosition = function() {
var node = this.node.previousSibling, mc = node.mc;
this._y = node ? mc._y+mc._height : 20;
this._x = this.node.attributes.dp*7;
};
tmp.onReposition = function() {
this.setPosition()
//var mc = this.node.previousSibling.mc;
// this.mc._y = mc ? mc._y+mc._height : 20;
this.node.nextNoChildNode.mc.onReposition();
};
delete tmp;
ASSetPropFlags(this, ["helpMenuClass", "helpMenuItemClass"], 7, 1);


Iv 02.06.2004 13:25

но я, когда говорил, что текстовые данные могут быть легко конвертированы в xml прежде всего имел ввиду, что сохранение в SO всегда происходит в текстовом формате.
Но данные сохраняются текстовом виде но в xml стандарте.
И вытащить их легко простым ....parseXML(data)
Расширение файла не имеет значения. Назови его хоть JPEG но внутри сделай текст, флэш его поймет пральна.

Iv 02.06.2004 13:35

я действительно очень давно не вошкался с fscommand("exec",...) и слету не готов поспорить :)
однако есть десятки альтернативных путей.


что касается использования php+mysql, то как я понял, этот админ не сетевой а локальный. Т.е. сидит перец и у себя на компе колбасит какие - нибудь карты объектов, а затем готовый xml подкладывает для отображалки.
впрочем и это не мешает пользовать сервак.

2urca: подключай чела, который знает серверные дела.
без этого не обойтись по ходу.

Nox Noctis 02.06.2004 13:40

Цитата:

Оригинал написал(а) BitSky
я действительно очень давно не вошкался с fscommand("exec",...) и слету не готов поспорить :)
однако есть десятки альтернативных путей.

ну, насчет десятков ты пожалуй загнул...

просто я уж было подумал что проспал какую-то тему по этой части :)

суть в том что после пятерки тому что вызывается через fscommand("exec",...) никак не передать параметр. вообще.

так что надо джагглор и иже с ним :)

Iv 02.06.2004 13:44

Цитата:

ну, насчет десятков ты пожалуй загнул...
- действительно. я бы сказал сотни.

Nox Noctis 02.06.2004 14:00

ууу...
не будем спорить пока неясен предмет спора, ладно? :))

urca 02.06.2004 16:06

4 BitSky
Насчет локального админа - так оно прибл-но и есть.

Тут немного другая ситуация - человек, пишущий сервер-поддержку моего проекта, увольняется в пятницу и после этого моя программа никому нужна не будет... если не будет доведена до состояния бета-версии!

2 Dindin - только критика...а мне же нужна помощь.
(я же сначала попробовал сам, потом только обратился сюда! Форум-то для этого и нужен, или я не прав?)

Насчет *.тхт с душой *.хмл - ясно.

__________________
"....ты ждал, что друг тебя поймет..."

Iv 02.06.2004 16:11

Цитата:

2 Dindin - только критика...а мне же нужна помощь.
2urca: - ты разве не знаешь, как Dindin - на русский переводится?

Dindin 02.06.2004 16:17

BitSky, ты меня заинтересовал.. И как же?

Iv 02.06.2004 16:25

есть различные вариации
но в каждом конкретном случае это зависит от твоего предыдущего поста и фантазии переводчика %)

Dindin 02.06.2004 16:28

Цитата:

Оригинал написал(а) BitSky
есть различные вариации
но в каждом конкретном случае это зависит от твоего предыдущего поста и фантазии переводчика %)

Это применимо к большинству из тех сочетаний символов, которые можно использовать для ника. :):)
К примеру - BitSky - небо с овчинку :):)

Nox Noctis 02.06.2004 16:47

флудеры нехорошие :)

щас будете сочинять сто способов вызвать екзешник :))

BitSky, а к чему ты этот мега-код запостил, если не секрет? :) какова целевая аудитория? :))

urca 02.06.2004 16:47

про парсер...
 
НИФИГАА СЕБЕ!!!!!!
ОГО!
Слава богу это мне не нужно.. пока :-)
Мои данные-то находятся в формате хмл - поэтому действительно расширение файлане так важно!

________________________________
"...мы бредим от удушья..."

Iv 02.06.2004 17:03

Цитата:

какова целевая аудитория? :))
- хехе... флэшеры

на самом деле такого уродливого меню как на livedocs у макромедии я не видел давно.
вот и вошкался с тем, чтобы сделать свой просмотрщик livedocs.
но бросил.

opex 02.06.2004 20:36

1.Вы тут заговарили о запуске ехе с праметром, но как я знаю не в пятом не в любом другом флеше это нельзя сделать напрямую из флеша, допустим такая сторочка в пятке будет выполнена но даные не уйдут в экзешник.
Код:


fscommand ("exec", "any.exe 'parameter'");

Поправте меня если я не прав.
2.Где то читал (не утверждаю что реально) какието рукодельци писали драйвер для принтера который получал данные из флеш (на локале) и заносил их в файл.

opex 02.06.2004 20:51

извеняюсь
Код:

fscommand ("exec", "any.exe\tparameter");

opex 03.06.2004 15:35

Вложений: 1
Вот написал исходничек если я ошибаюсь (с передачай порамтра в 5 флеше ) то проблема с записью в xml решена :)

urca 04.06.2004 19:11

Долго не мог дотянуться до своего проекта...
 
2 орех:
может я чего-то не понимаю. что в твоем исходнике может помочь мне с записью в ХМЛ-конфиг??
Ничего что-то он не пишет...Я меня вообще-то 7-ка МХ. так что может изза этого???

А еще как оказалось КАЖДЫЙ юзер должен иметь возможность редактировать ХМЛ-конфиг.....
только обычный юзер может редактировать только 1-2 поля (снять/поставить объект на охрану) а АДМИН-ы (их около 3) - имеют full-contact.
точнее такая задумка... Но вот сделать пока не выходит.. :(((
А можно ли как бы на сервере LSO в файл сохранять, а не на локальной тачке?


______________
"...но выйти вон и сам не прочь..."

Dindin 04.06.2004 19:31

Не надо изобретать велосипед. Такие вещи делаются трехзвенкой - flash+PHP+mySQL. Flash вообще-то предназначен для разработки клиентских приложений и напрямую с сервером работать не может.

urca 05.06.2004 12:34

Ну надоел этот DinDin.... спасу нет!
 
Специально для DinDin-а
Я же уже говорил - МОЯ ФЛЭШЬ - ВЗАИМОДЕЙСТВУЕТ С ОСТАЛЬНЫМИ ПРИЛОЖЕНИЯМИ ТОЛЬКО ЧЕРЕЗ ХМЛ-конфигурационный файл!!!

при чем здесь MySql ????

Далее - серверная поддержка моего проекта будет (ой будет ли??) осуществляться на языке Perl.
То есть РНР - тоже не то, что надо!!!!!

Да, возможно ты и прав, что без помощи другой технологии не обойтись, но зачем тогда ты советуешь не 1, а 2????? Насколько я понимаю - Муsql - это для обработки баз данных. НО ВЕДЬ МОЯ БАЗА - ЭТО ХМЛ-файл!!! Ну не нужен здесь этот MySql (твой эСКуэЛь)!!!!

Ну клиентские приложения-то работают с сервером --
посылают и принимают данные!

Пшеропрошую за некоторую резкость.
______________________________
".....ты помнишь...."

Dindin 05.06.2004 19:36

Подробно и пошагово.
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, чем чем базы данных пока нет.

ЗЫ На резкозть я не обижаюсь, она, как правило плод недопонимания :)

urca 07.06.2004 13:39

В том-то и все дело!
 
.. Что:
1) я и разрабатываю в осоновном клиентское приложение, просто как оказалось клиент имеет право редактировать конфиг-файл!
!!!2) - А вот это я и пытался выяснить - можно ли не использовать серверный модуль какой-либо технологии !!
3) Моя задача не для Веба делается, следовательно не будет попыток считать мой конфиг разноплановыми технологиями. И именно поэтому желательно обойтись минимумом технологий! (одно из требований - минимальная длина цепочки!)
!!!!!4) Хорошая ИДЕЯ!!!!!! - Вот так я наверное и поступлю!
_______________________
"....не покидать корабль!"


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

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