| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| completely mad Registriert seit: Mar 2006
Beiträge: 160
|
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 denn wenn ich nun nach oben genannten code folgendes eingebe: Code: trace(imagefiles[1]); danke für eure hilfe, grüße, madtrigger |
| | |
| | #2 (permalink) |
| Techniker 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 |
| | |
| | #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> 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 |
| | |
| | #4 (permalink) |
| Techniker 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) |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |