Autor |
Nachricht |
sahnemuh
Threadersteller
Dabei seit: 19.06.2003
Ort: /dev/null
Alter: 42
Geschlecht:
|
Verfasst Mi 22.07.2009 14:26
Titel Flash/AS: XML "schöner" parsen? Best practice? |
|
|
Moin.
Ich bastel' hier grade an einer "Tagcloud" oder viel mehr eine "Mindmap" für einen Kunden. Irgendwie habe ich das Gefühl, dass man die Art und Weise des "Datenhandlings" bestimmt eleganter machen könnte.
Das ganze soll wie folgt ticken: Es gibt 4 Oberbegriffe, denen jeweils 1-2 Unterbegriffe zugeordnet sind. Diesen Unterbegriffen sind dann wiederum n weitere Unterbegriffe zugeordnet. Sichtbar sind vorerst nur die ersten 2 Ebenen. Bei Klick auf einen Begriff der zweiten Ebene blenden sich die entsprechenden Begriffe die dieser zugeordnet sind ein und es findet eine Animation statt (es wird zu den Unterbegriffen "gezoomt" und sie blenden sich ein) die Eingeblendeten Unterbegriffe fungieren als Links - das ganze ist also mehr oder weniger ein "Sitemap".
So weit so gut. Folgende Struktur habe ich mir für's XML überlegt:
Code: | <?xml version"1.0"?>
<links>
<section label="Oberbegriff 1" instance_name="oberbegriff_1" posx="100" posy="100" zoomScale="2" zoomGoToX="100" zoomGoToY="100">
<subsection instance_name="Begriff_1" label="Begriff 1" posx="100" posy="100">
<link label="Link 1" url="http://www.google.de" instance_name="link_1" posx="100" posy="100" />
</subsection>
<subsection instance_name="Begriff_2" label="Begriff 2" posx="100" posy="100" zoomScale="2" zoomGotoX="100" zoomGotoY="100">
<link label="Link 1" url="http://www.google.de" instance_name="link_1" posx="100" posy="100" />
<link label="Link 2" url="http://www.google.de" instance_name="link_2" posx="100" posy="100" />
</subsection>
</section>
<section label="Oberbegriff 1" instance_name="business_it" posx="100" posy="100" zoomScale="2" zoomGoToX="100" zoomGoToY="100">
<subsection instance_name="Begriff 1" label="begriff_2" posx="100" posy="100">
<link label="Link 1" url="http://www.google.de" instance_name="link_1" posx="100" posy="100" />
</subsection>
</section>
</links> |
Die Attribute "posX" und "posY" dienen zum positionieren der Begriffe. Label ist der entsprechende Text, instance_name verwende ich um später mcs zu erzeugen. Die Attribute zoomGotoX, zoomGotoY und zoomScale sind für die Animation und das "Hineinzoomen" in die dritte Ebene gedacht.
Um das Ganze zu parsen ist meines Erachtens ein fieses "for-schleifen-monster" nötig:
Code: | for (var i = 0; i < xmlObject.childNodes.length; ++i) {
//sections
for(var j = 0; j < xmlObject.childNodes[i].childNodes.length; j++) {
//subsections
for(var k = 0; k < xmlObject.childNodes[i].childNodes[j].childNodes.length; k++) {
// links
for(var l = 0; l < xmlObject.childNodes[i].childNodes[j].childNodes[k]; l++) {
}
}
}
} |
Beim schreiben des selbigen kam mir der Gedanke: "Das muß doch schöner gehen!".
Vorschläge anyone?
|
|
|
|
|
l'Audiophile
Dabei seit: 16.09.2004
Ort: Berlin
Alter: 43
Geschlecht:
|
Verfasst Mi 22.07.2009 14:38
Titel
|
|
|
Nur mal eben überflogen, möchte dir aber trotzdem einen Rat geben: Du kannst Attribute (zumindestens in AS3) auch direkt ansprechen ohne mit unendlich langen Pfaden zu arbeiten.
|
|
|
|
|
Anzeige
|
|
|
sahnemuh
Threadersteller
Dabei seit: 19.06.2003
Ort: /dev/null
Alter: 42
Geschlecht:
|
Verfasst Mi 22.07.2009 14:44
Titel
|
|
|
ich bin derzeit noch bei AS2 und nicht so der programmierkönig. insofern werde ich wohl auf dieses feature erst mal verzichten müssen :/
|
|
|
|
|
phihochzwei
Moderator
Dabei seit: 08.06.2006
Ort: Mülheim an der Ruhr
Alter: 46
Geschlecht:
|
Verfasst Mi 22.07.2009 14:54
Titel
|
|
|
Ich mag das "neue" XML auch nicht
Hier mal mein Vorschlag
Code: |
for each(var node:XMLNode in xmlObject.firstChild.childNodes) {
//sections
for each(var snode:XMLNode in node.childNodes){
//subsections
for each(var ssnode:XMLNode in snode.childNodes){
// links
for each(var lnode:XMLNode in ssnode.childNodes){
}
}
}
} |
|
|
|
|
|
sahnemuh
Threadersteller
Dabei seit: 19.06.2003
Ort: /dev/null
Alter: 42
Geschlecht:
|
Verfasst Mi 22.07.2009 15:01
Titel
|
|
|
phihochzwei hat geschrieben: | Ich mag das "neue" XML auch nicht
Hier mal mein Vorschlag
Code: |
for each(var node:XMLNode in xmlObject.firstChild.childNodes) {
//sections
for each(var snode:XMLNode in node.childNodes){
//subsections
for each(var ssnode:XMLNode in snode.childNodes){
// links
for each(var lnode:XMLNode in ssnode.childNodes){
}
}
}
} |
|
Vielen Dank! das sieht schon mal übersichtlicher aus.
Mit AS2/3 sollte ich mich vielleicht auch mal "richtig" beschäftigen. Leider komme ich so gut wie nie in die Gelegenheit Flash Geschichten machen zu können (obwohl es mir eigtl. Spaß macht).
Dafür schlage ich mich halt (viel zu oft) mit Javascript rum - was man wohl auch an meinem Beispiel oben sieht (welches aufgrund mangelnder Typisierung wohl eher AS1 ist, wenn ich es mir so recht überlege).
€: kann es sein, dass for each as3 ist?
Zuletzt bearbeitet von sahnemuh am Mi 22.07.2009 15:16, insgesamt 3-mal bearbeitet
|
|
|
|
|
phihochzwei
Moderator
Dabei seit: 08.06.2006
Ort: Mülheim an der Ruhr
Alter: 46
Geschlecht:
|
Verfasst Mi 22.07.2009 15:35
Titel
|
|
|
Jepp, wovon reden wir denn ???
|
|
|
|
|
sahnemuh
Threadersteller
Dabei seit: 19.06.2003
Ort: /dev/null
Alter: 42
Geschlecht:
|
Verfasst Mi 22.07.2009 16:02
Titel
|
|
|
AS2 oder 1
Wie vorher gesagt, habe ich mich mit AS3 noch nie beschäftigt. Leider.
|
|
|
|
|
|
|
|
Ähnliche Themen |
schöner Flash-Video-Player gesucht !
xml laden und parsen in *.as
Parsen von datei php
XML mit Javascript parsen
[PHP]Problem bei Parsen vom XML-Daten
XML in PHP einlesen (parsen) und Inhalte ausgeben.
|
|