Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 07-09-2003, 13:14   #1 (permalink)
Neuer User
 
Registriert seit: Jul 2002
Ort: Frankfurt
Beiträge: 195
Question string als verwendbarer pfad

ich will aus einem string wieder einen verwendbaren pfad machen...

auf der bühne ein mc "eins" und in diesem ein weiterer mc "zwei".

pfad = "eins.zwei";
trace([pfad]._x);

will einfach nicht funktionieren. ich bekomm undefined.

wohingegen dieses doch wunderbar geht:

attribut = "_x";
trace(eins.zwei[attribut]);

wie bekomm ich das hin, dass ich einen als string vorliegenden pfad auch wieder als pfadangabe verwenden kann ?
Vivienne ist offline   Mit Zitat antworten
Alt 07-09-2003, 13:20   #2 (permalink)
[Ernst Reiter]
 
Benutzerbild von Scrawer
 
Registriert seit: Jul 2001
Ort: austria
Beiträge: 3.691
naja.... ein absoluter pfad... geht nur als verweis......
z.b.
x = _root.eins.zwei;
x.attribut // das geht dann

machst du nun aber
x = "_root.eins.zwei";
x.attribut... geht nun nicht da er x als string sieht
mit
y = eval(x);
nun geht auch y.attribut....

du siehst das sehr schön wenn du die var ausgibst im ausgabe fenster....

Variable _level0.y = [Movieclip:_level0.eins.zwei]
__________________
Das Gesetz des Lebens liegt im Notwendigen. Der Reiz des Lebens liegt im Überflüssigen
m.f.g Scrawer (www.thinkspace.at)
Scrawer ist offline   Mit Zitat antworten
Alt 07-09-2003, 16:17   #3 (permalink)
Neuer User
 
Registriert seit: Jul 2002
Ort: Frankfurt
Beiträge: 195
tatsächlich!
mit eval klappt's.
ich dachte immer in mx kann man eval einfach mit den eckigen klammern ersetzen ??!?

aber folgendes - was ich eigentlich damit machen will - funktioniert auch mit eval nicht ;-(

quelle = "_level0.meinXml.firstChild.childNodes[0].childNodes[1].childNodes[0].childNodes";
trace(eval(quelle));

da bekomm ich wieder "undefined".
der pfad in das xmlobject stimmt aber.
wenn ich nicht mit dem string arbeite, dann bekomme ich mein element getraced.....

(ich muss das als string übergeben weil ich will, dass der mc in dem sich das ganze abspielt, weiss wo sein textfeldinhalt herkommt.
der soll da nämlich wieder reinschreiben können...)

ich kriegs nicht hin :-(
Vivienne ist offline   Mit Zitat antworten
Alt 07-09-2003, 21:39   #4 (permalink)
Neuer User
 
Registriert seit: Jul 2002
Ort: Frankfurt
Beiträge: 195
hmmm jetzt geht's.
ich übergebs als "nichtstring" in einem array.

aber das die eckigen klammern ein eval () nicht immer und überall ersetzen können.....

strange. man denkt man weiss wie's geht und man weiss nix ;-)
Vivienne ist offline   Mit Zitat antworten
Alt 08-09-2003, 09:01   #5 (permalink)
[Ernst Reiter]
 
Benutzerbild von Scrawer
 
Registriert seit: Jul 2001
Ort: austria
Beiträge: 3.691
quelle = _level0.meinXml.firstChild.childNodes[0].childNodes[1].childNodes[0].childNodes;

und es geht... warum als string in ""?

eval kann viel mehr als nur []
__________________
Das Gesetz des Lebens liegt im Notwendigen. Der Reiz des Lebens liegt im Überflüssigen
m.f.g Scrawer (www.thinkspace.at)
Scrawer ist offline   Mit Zitat antworten
Alt 08-09-2003, 10:40   #6 (permalink)
Neuer User
 
Registriert seit: Jul 2002
Ort: Frankfurt
Beiträge: 195
Zitat:
Geschrieben von Scrawer
quelle = _level0.meinXml.firstChild.childNodes[0].childNodes[1].childNodes[0].childNodes;

und es geht... warum als string in ""?

eval kann viel mehr als nur []
naja es wird in einen mc mit einem textfeld geschickt.
das textfeld soll "quelle" anzeigen.
tut es auch.
jetzt will ich in diesem textfeld editieren und den geänderten wert an die entsprechende stelle des xml objects schreiben (überschreiben).
dafür brauch ich den pfad zum knoten und nicht den wert des knotens.
aber wie gesagt,
_level0.meinXml.firstChild.childNodes[0].childNodes[1].childNodes[0].childNodes in ein array geschrieben und so an den mc übergeben funktioniert.
ich kann dann aus dem mc mit meinArray[0].nodeValue den wert des knotens überschreiben.

ich krieg aber trotzdem voll die krise.
ich will mit for schleifen (quasi "automatisiert") nach und nach mein ganzes xml durchgrasen. dabei komme ich natürlich immer wieder auf sowas hier in der art :

eval("meinXml.firstChild.childNodes["+w+"].nodeType");

und genau das funktioniert leider nicht.
wie sag ich ihm denn dass er
meinXml.firstChild.childNodes[0 bis w].nodeType durchlaufen soll ? ;-(
Vivienne ist offline   Mit Zitat antworten
Alt 08-09-2003, 11:07   #7 (permalink)
[Ernst Reiter]
 
Benutzerbild von Scrawer
 
Registriert seit: Jul 2001
Ort: austria
Beiträge: 3.691
ich versteh dich nicht?
warum bitte speicherst du immer die pfade in vars?

so was macht man ja mit for schleifen wenn du einen xml string zerlegen möchtest.....
ActionScript:
  1. for (var i=0; i<this.firstChild.childNodes.length; i++)
  2. {
  3. trace(this.firstChild.childNodes[i])
  4. }
__________________
Das Gesetz des Lebens liegt im Notwendigen. Der Reiz des Lebens liegt im Überflüssigen
m.f.g Scrawer (www.thinkspace.at)
Scrawer ist offline   Mit Zitat antworten
Alt 08-09-2003, 11:22   #8 (permalink)
Neuer User
 
Registriert seit: Jul 2002
Ort: Frankfurt
Beiträge: 195
naja, mein ansatz sieht so aus :
Code:
level1Child = meinXml.firstChild;
level2Child = level1Child.firstChild;
level3Child = level2Child.firstChild;
level4Child = level3Child.firstChild;
level5Child = level4Child.firstChild;
for (a=1; a<6; a++) {
trace ("level"+a+"child ("+eval("level"+a+"child.nodeName")+") anzahl childnodes = " + eval("level"+a+"child.childNodes.length"));
			for (w=0; w<eval("level"+a+"child.childNodes.length"); w++) {
			trace(eval("level"+a+"child.childNodes["+w+"].nodeType"));
				}
			}

wie mach ich denn sowas ohne die zusammengesetzten strings ?
*grad voll auf dem schlauch steh*
Vivienne ist offline   Mit Zitat antworten
Alt 08-09-2003, 11:30   #9 (permalink)
[Ernst Reiter]
 
Benutzerbild von Scrawer
 
Registriert seit: Jul 2001
Ort: austria
Beiträge: 3.691
meno

zusammensetzen ist ja ok.... aber dann bitte als verweis nicht als string.....

und wenn du mehrere verschachtelte knoten hast in deinem xml file... dann arbeite.... mit einer rekursiven function....
such mal nach dem thema xml strings zerlegen und rekursiv... da gibts einiges im forum
__________________
Das Gesetz des Lebens liegt im Notwendigen. Der Reiz des Lebens liegt im Überflüssigen
m.f.g Scrawer (www.thinkspace.at)
Scrawer ist offline   Mit Zitat antworten
Alt 08-09-2003, 11:34   #10 (permalink)
Neuer User
 
Registriert seit: Jul 2002
Ort: Frankfurt
Beiträge: 195
bin etwas verwirrt ;-)

ich werd mich mal auf die suche nach rekursiv und xml strings zerlegen machen...

aber was meinst du mit
"zusammensetzen ist ja ok.... aber dann bitte als verweis nicht als string.."

wie sieht denn ein zusammengesetzter "verweis" im gegensatz zu dem string aus ?
Vivienne ist offline   Mit Zitat antworten
Alt 08-09-2003, 11:44   #11 (permalink)
[Ernst Reiter]
 
Benutzerbild von Scrawer
 
Registriert seit: Jul 2001
Ort: austria
Beiträge: 3.691
verweis = _root.xmlObject.firstChild.childNodes[0];
string = "_root.xmlObject.firstChild.childNodes[0]";

ein string ist ein fixer wert der wird sich nie ändern oder sonnst was..... der verweis ist eben nur ein zeiger auf denn eigentlichen wert z.b.

x = 10;
y = x;
trace(y) // 10;
x = 15;
trace(y) // 15;

das ganze nun als string
x = 10;
y = "x";
trace(y) // x;
x = 15;
trace(y) // x;

ich denke nun ist dir der unterschied k
__________________
Das Gesetz des Lebens liegt im Notwendigen. Der Reiz des Lebens liegt im Überflüssigen
m.f.g Scrawer (www.thinkspace.at)
Scrawer ist offline   Mit Zitat antworten
Alt 08-09-2003, 17:50   #12 (permalink)
Neuer User
 
Registriert seit: Jul 2002
Ort: Frankfurt
Beiträge: 195
na gut, na gut,
ich hab gesucht und auch in etwa gefunden was ich wollte.
hier ein paar codezeilen von alois:
Code:
xml_nodes=function(child,tiefe){
        if (child.hasChildNodes()){
                trace (tiefe +" "+ child.nodeName+"="+ child.firstChild.nodeValue);
                tiefe++;
                for(var i=0;i<child.childNodes.length;i++){
                        xml_nodes(child.childNodes[i],tiefe);
                }
        }
}
my_xml=new XML();
my_xml.ignoreWhite=true;//ohne ignoreWhite wedenm auch Steuerzeichen als xml-Tags erkannt
my_xml.onLoad=function(succsess){
        if(succsess){
                xml_nodes(this,0);
        }
}
my_xml.load("deine.xml");
das funktioniert so weit ganz gut.
das problem welches ich immer noch habe ist, dass ich zu jedem trace was ich mit dem script bekomme noch den "absoluten pfad an die entsprechende stelle des xml" haben muss.
weil ich später von anderer stelle aus (je ein attachmovieclip wo die inhalte auf ein textfeld gehen) den inhalt des entsprechenden knotens überschreiben will.

und hier war mein ansatz halt so ein zusammengesetzter string.
bin aber für jeden tipp wie, ich es ansonsten hinbekomme,
das einer von zig movieclips mit einem textfeldinhalt weiss, wo dieser inhalt denn mal hergekommen ist.

ich hoffe man kann verstehen was ich meine? scrawer ?
Vivienne ist offline   Mit Zitat antworten
Alt 09-09-2003, 08:55   #13 (permalink)
[Ernst Reiter]
 
Benutzerbild von Scrawer
 
Registriert seit: Jul 2001
Ort: austria
Beiträge: 3.691
ein verweis!

wie in meinem beispiel beschrieben.....
aktuell willst du immer den pfad so speichern

quelle = "_level0.meinXml.firstChild.childNodes[0]";
und diesen dann umwandeln..... wenn du den wert von .....childNodes[0] haben möchtest

nur wie oben schon in meinem x,y beispiel zu sehen ist.... du musst nich so kompliziert denken......

quelle = _level0.meinXml.firstChild.childNodes[0];
speichert nun in der var quelle einen zeiger auf das xml object..... und du kannst mit hilfe von quelle jeder zeit von wo aus auch immer auf das _level0.meinXml.firstChild.childNodes[0] zugreifen... auch wenn sich dieser wert ändert da ja mit jeder abfrage von quelle erst der wert aus dem xml Object geholt wird... wie ja mein bsp.. mit x,y 10/15 schön zeigt.......
__________________
Das Gesetz des Lebens liegt im Notwendigen. Der Reiz des Lebens liegt im Überflüssigen
m.f.g Scrawer (www.thinkspace.at)

Geändert von Scrawer (09-09-2003 um 08:57 Uhr)
Scrawer ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 08:38 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele