Lästiges XML Rätsel - Fehler in for-Schleife?

Ensign

Mitglied
Ein der nervigsten Sachen, die je passieren können, ist wenn ein Flash-File, dass vorher funktioniert hat, einfach so ohne große Veränderung die Funktion völlig aufgibt, so wie bei mir hier... ***AAAAARRRRRRRRG***

Nun aber zum Thema. Ich lade für eine modifizierte Gallery eine XML-Datei ins Flash-File. Es wird alles hineingeladen, man kann es auch im Debugger mit allen Nodes anzeigen lassen, eingentlich prima. Jedoch werden auf einmal die Variablen, die nötig sind um weiter movieClips zu erzeugen, in die dann die Thumnails geladen werden sollen (und ja auch schon ein mal geladen wurde), als "undefined" angezeigt! Unten ist der wesentliche Ausschnitt aus der Syntax, denn hier muss der Fehler liegen, weil das Script dort zu funktionieren aufhort. Ich komm nur einfach nicht weiter, weil ich mich auch noch nicht gut genug auskenne und mein Herumprobieren nichts mehr bringt.

PHP:
// Hier lade ich das XML-File rein
function loadData() {
theXML = new XML();
theXML.ignoreWhite = true;
System.useCodePage = true;
theXML.load("http://localhost/arttemptation/bilder.xml?"+new Date().getTime());
theXML.onLoad = function(status) {
if (status) {
gal_xml = theXML.childNodes[0].childNodes[0].childNodes[0].childNodes;
delete theXML;
create();
}
};
}
loadData();
 
create = function () {
anzahl = gal_xml.length; // Hat beim Debuggen noch einen Wert!
for (var i = 1; i<=anzahl; i++) {
daten_gal = gal_xml[i]; // Ist undefiniert!
mc = prev.holder.createEmptyMovieClip('holder'+i, -i); // auch undefiniert!
mc.loadMovie('gallery/files/thumbnails/'+daten_gal.attributes.filename, 0);
prev.holder.onEnterFrame = function() {
if (this._width>0) { // so weit kommt er schon gar nicht!
	for (var i = 1; i<=anzahl; i++) {
	 daten_gal = gal_xml[i];
	 mc = this["holder"+i];
	 mc.id = "gallery/files/"+daten_gal.attributes.filename;
	 mc.filename = daten_gal.attributes.filename;
	 mc.onPress = function() {
	 display.createEmptyMovieClip("anzeige", 0);
	 display.anzeige.laden(this.id, this.filename); // Funktion für das große Bild dann (ist nicht gepostet)
	 };
	}
	delete this.onEnterFrame;
}
};
}
};
Für alle, die es genauer interessiert hier der XML-Code, der in Ordnung ist:
PHP:
<?xml version="1.0" encoding="iso-8859-1" ?>
<root>
<galroot>
<galsec title="Meine Bilder" pic="meine_bilder_2004.jpg"><![CDATA[Dies sind die Bilder meiner letzen geilen Session von einer Harten Ausstellung ich geh gleich ein ! MIR GEH EINER AB! ALTER! JA! VOLL ABA! ]]>
<gal time="5. Oktober 2004, 17:37" filename="baum.jpg" title="a" section="Meine Bilder"><![CDATA[TEXT ALTER TEXT <br><br><br>TEXT<br><br>leich ein ! MIR GEH EINER AB! ALTER! JA! VOLL ABA! ]]></gal>
<gal time="5. Oktober 2004, 17:37" filename="bug.jpg" title="KÄÄÄFER112" section="Meine Bilder"><![CDATA[Auch hier steht etwas <i>TEXT</i> <br><br><b>GEIL? FETT?</a> <br><br><br>Man wird n\n\nsehN]]></gal>
<gal time="5. Oktober 2004, 17:34" filename="booti.jpg" title="Strichebooot" section="Meine Bilder"><![CDATA[]]></gal>
<gal time="5. Oktober 2004, 17:31" filename="striche.jpg" title="Striche" section="Meine Bilder"><![CDATA[]]></gal>
<gal time="5. Oktober 2004, 17:31" filename="striche.jpg" title="Striche" section="Meine Bilder"><![CDATA[]]></gal>
<gal time="5. Oktober 2004, 17:29" filename="durcheinander.jpg" title="Durcheinander" section="Meine Bilder"><![CDATA[Das ist ein Durcheinadner<br><br>50 x 50 cm, Acryl auf Leinwand<br>Ur Leinwand!<br>Ur Leinwand!<br>Ur Leinwand!<br>Ur Leinwand!<br>ENDE.]]></gal>
<gal time="5. Oktober 2004, 17:29" filename="durcheinander.jpg" title="Busenfrau" section="Meine Bilder"><![CDATA[]]></gal>
<gal time="5. Oktober 2004, 17:31" filename="striche.jpg" title="Striche" section="Meine Bilder"><![CDATA[]]></gal>
<gal time="5. Oktober 2004, 17:31" filename="striche.jpg" title="Striche" section="Meine Bilder"><![CDATA[]]></gal>
<gal time="5. Oktober 2004, 17:29" filename="durcheinander.jpg" title="Durcheinander" section="Meine Bilder"><![CDATA[Das ist ein Durcheinadner
<br><br><br>
50 x 50 cm, Acryl auf Leinwand]]></gal>
<gal time="5. Oktober 2004, 17:29" filename="durcheinander.jpg" title="Busenfrau" section="Meine Bilder"><![CDATA[]]></gal>
</galsec>
</galroot>
</root>


Der Fehler muss doch irgendwo in der Syntax liegen! "anzahl" hat noch einen Wert, aber "daten_gal" keinen, "mc" ebenfalls nicht und dann können auch nicht die "holder" erzeugt werden. Ich habe den Verdacht, dass das an der for-Schleife liegt! Aber ich kenn mich selbst nicht aus, da das Ganze ja noch vor zwei Stunden funktioniert hat! Und ich hab keinen Schimmer warum jetzt nicht!

Bitte, hoffentlich kann mir jemand helfen!
 
hi,

da sprang mir was ins Auge:
};
Hat das einen Sinn?
Ansonsten hab ich das Skript nicht durchgelesen.

Gruss
 
}; - die Klammer mit dem Strichpunkt am Ende hat nichts zu bedeuten. Die hab ich vom ursprünglichen Script übernommen. Wird nicht flasch von Flash interpretiert.
 
müsstest Du nicht von 0 bis anzahl - 1 zählen? Das erste Elemet in einem Array hat immer die Indexnummer 0 und das Element mit dem Index "anzahl" ist immer undefiniert.
Ich fang mit 1 an, weil der 0-Wert eine Obersektion der Gallery und keinen Bildeintrag darstellt.

Hab aber mittlerweile (neuer Tag, neues Glück ;-)) den Fehler gefunden und war wohl gersten schon zu müde um noch klar zu denken - es liegt gar nicht am Script! Der leere MovieClip namens "holder", wurde aus Versehen gelösch! Nun konnte natürlich nichts mehr gehen ab der Stelle wo der verwendet wird!

Ich möchte mich dennoch für eure Hilfe bedanken! Hoffentlich bleib ich in meinem Flashprojekt nicht mehr stecken....
 
Zurück