Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 26-07-2006, 11:26   #1 (permalink)
completely mad
 
Registriert seit: Mar 2006
Beiträge: 160
Question xml datei auslesen

hallo!

ich möchte eine dynamische bildergallerie erstellen, die die infos zu den bildern (eigentlich nur pfadangaben) aus einer xml datei bezieht.

dafür habe ich mich an folgenden code gehalten:

Code:
imageliste = new XML();//neues XML Objekt
imageliste.ignoreWhite=true;//Leerzeichen ignorieren
imageliste.onLoad = function (success) {//onLoad function (wird ausgeführt, wenn die daten geladen werden)
    if(success) {//wenn das laden erfolgreich war
        //array erstellen
        _global.imagefiles = [];
        for (var i=0; i<imageliste.firstChild.childNodes.length; i++) {//für alle Elemente in der XMLfile
            //Die attribute auslesen und in die Arrays packen
            _global.imagefiles[i] = imageliste.firstChild.childNodes[i].attributes.file;
            trace(imagefiles[i]);//überprüfen, ob wirklich die Daten richtig übergeben wurden
			}
    } else {anz.text="Fehler beim Laden der XML datei"}//falls ein Fehler auftritt beim Laden
}
imageliste.load("imagelist.xml");//Liste laden
meine frage nun: wie kann ich beispielsweise die info der zweiten node auslesen?
denn wenn ich nun nach oben genannten code folgendes eingebe:
Code:
trace(imagefiles[1]);
dann kommt immer nur "undefined" als fehlermeldung. dabei wurden vorher die ganzen infos korrekt getraced.

danke für eure hilfe,
grüße,
madtrigger
madtrigger ist offline   Mit Zitat antworten
Alt 26-07-2006, 17:20   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
gehe ich recht in der annahme, dass das
"..wenn ich nun nach oben genannten code.."
'nach' bedeutet, du hasst den trace-befehl unter den code geschrieben?

das wäre dann der hier zum 35.672.376.122.569.802.301sten mal beschriebene fehler:
du kannst die daten erst benützen, wenn sie geladen wurden. geladen werden sie, wenn das asynchrone onLoad ausgeführt wird. und das ist zeitlich viel viel später, nachdem dieser script und damit dein trace ausgeführt wurde.

if(success) {
benutze deine daten hier! ab hier stehen sie dir zur verfügung. in diesem if und allen programmteilen, die aus diesem if heraus aufgerufen werden.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 26-07-2006, 18:58   #3 (permalink)
completely mad
 
Registriert seit: Mar 2006
Beiträge: 160
alles klar, vielen dank. das wusste ich nicht und ich hatte das auch nicht in den anderen threads hier gelesen (dabei hab ich echt schon ne menge durchforstet).

innerhalb dieser if-anweisung habe ich in der tat alle infos aus dem array griffbereit.

leider funktioniert jetzt nicht mehr die funktion, die die bilder intervallabhänig hereinlädt.

der vollständigkeit halber:

inhalt der xml datei:

Code:
<?xml version='1.0' encoding='utf-8'?>
<pics>
  <pic file="images/image1.jpg" />
  <pic file="images/image2.jpg" />
  <pic file="images/image3.jpg" />
</pics>
as:

Code:
//XML auslesen
imageliste = new XML();
//neues XML Objekt
imageliste.ignoreWhite = true;
//Leerzeichen ignorieren
imageliste.onLoad = function(success) {
	//onLoad function (wird ausgeführt, wenn die daten geladen werden)
	if (success) {
		//wenn das laden erfolgreich war
		//array erstellen
		_global.imagefiles = [];
		for (var i = 0; i<imageliste.firstChild.childNodes.length; i++) {
			//für alle Elemente in der XMLfile
			//Die attribute auslesen und in die Arrays packen
			_global.imagefiles[i] = imageliste.firstChild.childNodes[i].attributes.file;
			//trace(imagefiles[i]);//überprüfen, ob wirklich die Daten richtig übergeben wurden
		}
		anzahlnodes = int(imageliste.firstChild.childNodes.length);
		// =3, da 3 Bilder im Verzeichnis liegen und in der XML-Datei eingetragen sind
		var anzahl = anzahlnodes-1;
		_root.createEmptyMovieClip("mcImageHolder", 1);
		var count = -1;
		var iv = setInterval(header, 2000);
		function header() {
			if (++count>anzahl) {
				count = 0;
			}
			loadMovie(imagefiles[count], "mcImageHolder");
		}
		header();
	} else {
		anz.text = "Fehler beim Laden der XML datei";
	}
	//falls ein Fehler auftritt beim Laden
};
imageliste.load("imagelist.xml");
//Liste laden
die funktion "header" wird irgendwie gar nicht berücksichtigt
madtrigger ist offline   Mit Zitat antworten
Alt 26-07-2006, 19:20   #4 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
"..das wusste ich nicht.." ist ja kein beinbruch und ich hab's ja auch nochmals erklärt.

die funktion header muss nicht in dem if-block stehen! ein aufruf aus dem if-block genügt. es geht ja nur darum, das nicht's benützt werden kann, wenn es noch nicht da ist.

teste deine funktionen bitte selbst:
a)
in header mal ein paar test-trace's einbauen, ob alles da ist, so wie du es erhoffst. z.b.
function header() {
if ...
trace(count+" // "+anzahl+" // "+imagefiles[count]);
..
b)
mal den debugger benützen. siehe meine signatur
c)
nachsehen, ob du alle parameter richtig angegeben hasst. z.b. überlege einmal, ob "mcImageHolder" oder _root.mcImageHolder ein objekt ist.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (26-07-2006 um 19:22 Uhr)
hgseib 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 13:51 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele