XML Daten durchblättern...

SonMiko

Erfahrenes Mitglied
Hallo liebe Flasher :),

hat jemand eine Ahnung, wie ich es in meinem Code erreichen kann, dass immer ein folgender Datensatz angezeigt wird?

Code:
var anzeige:Number=0;
myXML_xml= new XML();
myXML_xml.ignoreWhite=true;
myXML_xml.load("xml.xml");
myXML_xml.onLoad=function(successs){
	_root.xmlKunde=[];
	_root.xmlBeschreibung=[];
	if(successs){
		for(var i=0;i<myXML_xml.firstChild.childNodes.length; i++){
			_root.xmlKunde[i]=myXML_xml.firstChild.childNodes[i].attributes.kunde;
			_root.xmlBeschreibung[i]=myXML_xml.firstChild.childNodes[i].attributes.beschreibung;
			}
	}
	kunde_txt.text=_root.xmlKunde[anzeige];
	beschreibung_txt.text=_root.xmlBeschreibung[anzeige];
	
	weiter_mc.onMouseDown = function(){
	if(anzeige==myXML_xml.firstChild.childNodes.length-1){
		anzeige=0;
		trace(anzeige);
	}
	else{
	anzeige++;
	trace(anzeige);
	}
}

}

Einige werden diesen Code noch kennen, leider hatte ich keine Zeit daran weiter zu arbeiten... Ich habe also zwei Buttons erstellt und auf der Hauptbühne zwei Dynamische Textfelder (*_xt). Nun will ich, das wenn ich auf den Button "weiter_mc" klicke, die "anzeige" Variable um eins inkrementiert wird und die nächsten Daten der XML in den Dynamischen Textfeldern angezeigt werden.
Die Funktion muss also neu aufgerufen werden, aber wie?
Eine art Refresh muss her, etwas das den Code nochmals ablaufen lässt, aber was?
Ein "updateAfterEvent();) funktioniert nicht, oder ich habe etwas falsch gemacht...


Wäre für Hilfe sehr dankbar - wie immer.

Lieben Gruß,

Euer


Mike
 
Zuletzt bearbeitet:
Hi,

es wäre nicht sinnvoll, die onLoad-Funktion des XML-Objekts mehrmals aufrufen zu lassen: Du hast alle Daten ja schon nach dem ersten Mal in Deinem Array. Den Teil mit der Anzeige solltest Du in eine weitere Funktion auslagern, die Du beim Wechsel des aktuellen Datensatzes aufrufst.

Mit "updateAfterEvent" erreichst Du übrigens nie das erneute Ausführen von Code, sondern nur die Aktualisierung der Anzeige.

Gruß
.
 
Aber das mach ich doch mit:
Code:
weiter_mc.onMouseDown = function(){
	if(anzeige==myXML_xml.firstChild.childNodes.length-1){
		anzeige=0;
		trace(anzeige);
	}
	else{
	anzeige++;
	trace(anzeige);
	}
}
Die Frage ist: Welche Methoden gibt es um einen neuen onLoad - Prozess zu umgehen bzw. die Arrays direkt auszulesen?

Es ärgert mich total, das ich noch immer nicht begriffen habe weshalb die Daten im Array nicht außerhalb der onLoad - Funktion ausgelesen werden können.

Das Argument war, dass die Daten noch NICHT da sind, wenn ich sie anzeigen bzw. auslesen will - durch die Asynchronität. Das war soweit klar, aber wenn ich eine Bedingung erstelle, beispielsweise if(myXML.loaded)... und dann die Array - Daten ausgeben will klappt es trotzdem nicht.


-->Geistesblitz... Ich muss doch eigentlich nur in der Funktion die daten den Dynamischen Feldern neu zuweisen, oder?

---Test---

JA KLAPPT

Code:
weiter_mc.onMouseDown = function(){
	if(anzeige==myXML_xml.firstChild.childNodes.length-1){
	anzeige=0;
	kunde_txt.text=_root.xmlKunde[anzeige];
	beschreibung_txt.text=_root.xmlBeschreibung[anzeige];
	trace(anzeige);
	}
	else{
	anzeige++;
	kunde_txt.text=_root.xmlKunde[anzeige];
	beschreibung_txt.text=_root.xmlBeschreibung[anzeige];
	trace(anzeige);
	}
}

Gruß,

Mike
 
Mist - neues Problem:

Irgendwas stimmt nicht am Code, egal wohin ich klicke, es kommt immer der nächste Datensatz. Dabei soll diese Funktion doch nur eintreten, wenn ich auf "weiter_mc" klicke...
 
Anbei die XML Datei.

Bitte nichts verändern, das ich nicht mehr durchblicke - wirklich nur das, was mit dem Problem zu tun hat - wenn das in Ordnung ist (schon dreißt, da frage ich um Hilfe und hab dann noch so ein großes Mundwerk, aber ich möchte es ja auch verstehen und dann nicht nicht durchblicken...).

Das Problem: Wieso kann man überall hinklicken, sodass der Datensatz durchgeblättert wird?

Achja, ich hab noch eine Funktion eingebaut, das immer ein Bildchen mitgeladen wird.
Das ist natürlich so wies noch ist, totaler mist, da das Laden der Bilder mit Sicherheit lange dauern wird, und schon wieder ein weiterer Asynchroner Prozess vorhanden ist.
Ich werde in Zukunft anhand eines PHP Scriptes, ein Verzeichnis auslesen und direkt alle dortbefindlichen Bilder in einen oder mehrere MovieClips Importieren.



Liebe Grüße,


Mike
 

Anhänge

  • xml.zip
    8 KB · Aufrufe: 18
Hi,

Du darfst nicht den Listener "onMouseDown" verwenden, da sich dieser nicht auf das angegebene Objekt, sondern den kompletten Film bezieht. Verwende statt dessen ein MovieClip-spezifisches Mausereignis (z.B. onPress).

Statt:
Code:
weiter_mc.onMouseDown = function() {
also z.B: so:
Code:
weiter_mc.onPress = function() {

Gruß
.
 
Zurück