| |||||||
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) |
| Neuer User Registriert seit: May 2006 Ort: Amsterdam
Beiträge: 57
| XML einlesen funktioniert, Array ist danach aber undefined
Hallo, ich habe ein Problem mit dem einlesen einer XML-Datei in Flash. Das einlesen klappt, die Daten sind aber außerhalb der "onLoad = function(success)"-Schleife nicht verfügbar.. Sobald ich außerhalb der Funktion auf die Daten zugreifen will kommt ein "undefined".. Hier der Code: Code:
var XML_images = new XML();
XML_images.ignoreWhite=true;
XML_images.load("images.xml");
XML_images.onLoad = function(success)
{
var XML_images_files = [];
if (success) {
for (var i=0; i<XML_images.firstChild.childNodes.length; i++)
{
XML_images_files[i] = XML_images.firstChild.childNodes[i].attributes.pic;
}
}
trace(XML_images_files); // an dieser Stelle hat er die Daten noch
}
trace(XML_images_files); // hier dann nicht mehr.. ich nutze flash cs3. danke! |
| | |
| | #2 (permalink) |
| mod_rewrite Registriert seit: Feb 2003 Ort: München
Beiträge: 15.621
|
Du greifst in deinem 2. Trace auf Daten zu, die noch nicht da sind. Flash wartet nicht mit der Ausführung des Codes…
__________________ RTFM Wie man Fragen richtig stellt. Achim Bindannmalweg Money makes the world go round, fear makes it turn much faster. (New Model Army) |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: May 2006 Ort: Amsterdam
Beiträge: 57
|
ich habe jetzt das trace in den zweiten frame gelegt und im ersten ein stop() an den anfang und ein gotoAndStop(2) ans Ende. Eigentlich müssten die Daten dann ja da sein, oder? Leider funktioniert es auch nicht.. Code Frame 1: Code: stop();
var XML_images = new XML();
XML_images.ignoreWhite=true;
XML_images.load("images.xml");
XML_images.onLoad = function(success)
{
var XML_images_files = new Array ();
if (success) {
for (var i=0; i<XML_images.firstChild.childNodes.length; i++)
{
XML_images_files[i] = XML_images.firstChild.childNodes[i].attributes.pic;
}
}
}
gotoAndStop(2); Code: trace(XML_images_files); |
| | |
| | #4 (permalink) |
| mod_rewrite Registriert seit: Feb 2003 Ort: München
Beiträge: 15.621
|
Und warum sollte das funktionieren..? Glaubst du, die Daten sind in Bild 2 plötzlich "hergezaubert"..? Also mit Glück vielleicht...
__________________ RTFM Wie man Fragen richtig stellt. Achim Bindannmalweg Money makes the world go round, fear makes it turn much faster. (New Model Army) |
| | |
| | #5 (permalink) | |
| Neuer User Registriert seit: May 2006 Ort: Amsterdam
Beiträge: 57
| Zitat:
es war ein "var" zuviel (vor XML_images_files = new Array…) und hatte nichts damit zu tun ob die daten da sind oder noch verarbeitet werden oder ob flash wartet oder nicht.. danke trotzdem für deine hilfe.. | |
| | |
| | #6 (permalink) |
| mod_rewrite Registriert seit: Feb 2003 Ort: München
Beiträge: 15.621
|
Dann ist der genannte "Glücksfall" bei dir eingetreten… Spätestens online und/oder mit größeren XML-Files wird das nix mehr. Die Daten sind auch nicht da und wieder weg. Die Daten sind verfügbar, wenn im onLoad-Block der 'success'-Fall eintritt. Das Prinzip nennt man 'asynchron', und das bedeutet eben, dass Flash nicht mit der Code-Ausführung von oben nach unten wartet bis irgendwas passiert ist (d.h. Daten da sind). Und ist dir klar, was es mit deinem zusätzlichen "var-Thema" auf sich hatte..?
__________________ RTFM Wie man Fragen richtig stellt. Achim Bindannmalweg Money makes the world go round, fear makes it turn much faster. (New Model Army) |
| | |
| | #8 (permalink) |
| mod_rewrite Registriert seit: Feb 2003 Ort: München
Beiträge: 15.621
|
Richtig gedacht. Eine Variable, die innerhalb einer Funktion mit 'var' deklariert wird, ist außerhalb der Funktion nicht verfügbar. Also am besten die Variable ganz oben "anmelden" und ggf. initialisieren und weiter unten damit arbeiten.
__________________ RTFM Wie man Fragen richtig stellt. Achim Bindannmalweg Money makes the world go round, fear makes it turn much faster. (New Model Army) |
| | |
| | #9 (permalink) |
| Neuer User Registriert seit: May 2006 Ort: Amsterdam
Beiträge: 57
| deshalb war mir dann auch klar war, warum es auf einmal funktionierte. unklar ist mir im moment allerdings noch, warum es dann irgendwann nicht mehr funktionieren soll, also online oder bei größeren xmls...
|
| | |
| | #10 (permalink) |
| mod_rewrite Registriert seit: Feb 2003 Ort: München
Beiträge: 15.621
|
Naja, das hab ich jetzt schon so ca. 1,5mal versucht, dir zu erklären... Die XML-Datei muss vom Server angefordert, geladen und in Flash "vorverdaut" werden. Das kann schon mal ne Sekunde oder – je nach Dateigröße und -Komplexität – länger dauern. Und diese Sekunde wartet Flash wie gesagt eben nicht mit der weiteren Code-Abarbeitung. D.h. wenn man es so macht wie du, also nicht den onLoad abwartet, sondern außerhalb versucht, auf die XML-Daten zuzugreifen oder damit zu arbeiten, kriegt man mit Sicherheit ein 'undefined' o.ä. vor den Latz geknallt.
__________________ RTFM Wie man Fragen richtig stellt. Achim Bindannmalweg Money makes the world go round, fear makes it turn much faster. (New Model Army) |
| | |
| | #11 (permalink) |
| Neuer User Registriert seit: May 2006 Ort: Amsterdam
Beiträge: 57
|
okay, ich glaub ich hab es kapiert. wenn ich also das "gotoAndStop" oder das "trace" innerhalb der if (success)-schleife erst aufrufe sind die daten da und ich kann damit arbeiten. wenn ich es aber außerhalb lege kann es passieren, dass die daten noch nicht da sind.. richtig?
|
| | |
| | #12 (permalink) |
| mod_rewrite Registriert seit: Feb 2003 Ort: München
Beiträge: 15.621
|
Richtig.
__________________ RTFM Wie man Fragen richtig stellt. Achim Bindannmalweg Money makes the world go round, fear makes it turn much faster. (New Model Army) |
| | |
| | #14 (permalink) |
| mod_rewrite Registriert seit: Feb 2003 Ort: München
Beiträge: 15.621
|
Solang's was bringt…
__________________ RTFM Wie man Fragen richtig stellt. Achim Bindannmalweg Money makes the world go round, fear makes it turn much faster. (New Model Army) |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Objekt aus Array ins selbe Array kopieren mit push == undefined | TreX | ActionScript 2 | 2 | 01-09-2009 12:07 |
| Inhalt einer PHP-Datei einlesen - Funktioniert, aber mit Problemen | Tetrikus | ActionScript 2 | 1 | 13-01-2008 05:28 |
| Array wird gesplittet, danach ist schluss ??? | Digger2k3 | Flash MX 2004 | 3 | 25-10-2005 18:10 |
| laden von externer swf und danach fortsetzten - aber wie? | LoisLane | ActionScript 1 | 6 | 24-09-2003 06:23 |
| Globales Array in Function erzeugt - aber undefined wenn von außerhalb ausgelesen? | rniessner | ActionScript 1 | 8 | 15-09-2003 13:15 |