Zurück   Flashforum > Flash > Flash Fortgeschritten > Flash 8

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 25-05-2007, 12:52   #1 (permalink)
Neuer User
 
Registriert seit: Apr 2007
Beiträge: 142
Rekursion...

Hallo Forum,

ich versuche gerade mithilfe einer Rekursion eine xml-datei auszulesen, um daraus ein menü zu bauen.

Ich habe hierfür das Beispiel : XML Flash Menü in Typo3

benutzt.

Code:
xmldaten = new XML ();

function xml_rek (XMLData, tiefe)
{
	var str = "";
	var mcName = "ebene_";
	var btn_name = "btn_";
	
	for (var w = 0; w < tiefe; w++)
	{
		str += "-";
		btn_name += w;
		
	}
	mcName += tiefe;
	
	var msg = (XMLData.nodeType == 1) ? str + XMLData.nodeName : str + XMLData.nodeValue;
	
	trace (msg + " tiefe " + tiefe);
	trace (mcName);
	//
	trace (btn_name);
	
	if (XMLData.hasChildNodes ())
	{
		tiefe++;
		for (var i = 0; i < XMLData.childNodes.length; i++)
		{
			xml_rek (XMLData.childNodes[i],tiefe);
		}
	}
}
xmldaten.ignoreWhite = true;

xmldaten.onLoad = function (ok)
{
	if (ok)
	{
		xml_rek (this.firstChild,0);

	} else
	{
		trace ("Fehler beim Laden der XML Datei");
	}
};

xmldaten.load ("menue.xml");
die ausgabe dafür ist folgende:

Code:
menu tiefe 0
ebene_0
btn_
-item tiefe 1
ebene_1
btn_0
-item tiefe 1
ebene_1
btn_0
--item tiefe 2
ebene_2
btn_01
---item tiefe 3
ebene_3
btn_012
----item tiefe 4
ebene_4
btn_0123
-----item tiefe 5
ebene_5
btn_01234
------item tiefe 6
ebene_6
btn_012345
------item tiefe 6
ebene_6
btn_012345
allerdings möchte ich z.b. in ebene 6 natürlich unterschiedliche btn-Namen haben, um diese dann auch auf die Bühne zu positionieren.

kann mir jemand kurz auf de sprünge helfen, an welcher stelle ich den btn-namen erzeugen kann, damit in jeder ebene der zähler auf 0 gesetzt wird und ich damit eindeutige mcnamen für die buttons in einer eben habe?

Gruß

skittles
skittles ist offline   Mit Zitat antworten
Alt 26-05-2007, 16:33   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
http://www.seibsprogrammladen.de/fra...lgorithmen/XML
Code:
function fXML_parsen(_xml, _tiefe) {
	var _nr = 0;
	do {
		switch (_xml.nodeName) {
		case 'a' :
		case 'b' :
		case 'c' :
			_nr++;
			trace('btn_'+_tiefe+'_'+_nr);
			// trace('Tiefe:'+_tiefe+" NodeName:"+_xml.nodeName+" Value:"+_xml.firstChild.nodeValue);
			break;
		}
		if (_xml.hasChildNodes()) {
			fXML_parsen(_xml.firstChild, _tiefe+1);
		}
	} while (_xml=_xml.nextSibling);
}
//
// Anwendungsbeispiel: 
_xml = new XML("<a>aaa</a><a>aaa<b>bbb</b><b>bbb<c>ccc</c></b></a><a>aaa</a>");
fXML_parsen(_xml.firstChild, 0);
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 28-05-2007, 11:36   #3 (permalink)
Neuer User
 
Registriert seit: Apr 2007
Beiträge: 142
hallo hgseib,

danke für deine Antwort.
Deine Rekursives Beispiel habe ich mir damals schon betrachtet, muss aber zugeben, dass ich mich da auch erstmal ne weile mit beschäftigen musste.

Ich habe nun auch Deine Variante mit dem _nr als counter für die Unterknoten eingebaut.

Vielen Dank dafür!


skittles
skittles 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 19:27 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele