Zurück   Flashforum > Flash und Server > Flash mit XML und Webservices

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 09-12-2009, 19:26   #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 gehe davon aus, dass es ein ganz blöder fehler ist, ich bin aber leider kein flashheld und hoffe auf eure hilfe.. :-)
ich nutze flash cs3.

danke!
stibe ist offline   Mit Zitat antworten
Alt 09-12-2009, 19:36   #2 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
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)
sonar ist offline   Mit Zitat antworten
Alt 09-12-2009, 19:43   #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 Frame 2:
Code:
trace(XML_images_files);
stibe ist offline   Mit Zitat antworten
Alt 09-12-2009, 20:49   #4 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
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)
sonar ist offline   Mit Zitat antworten
Alt 09-12-2009, 21:00   #5 (permalink)
Neuer User
 
Registriert seit: May 2006
Ort: Amsterdam
Beiträge: 57
Zitat:
Zitat von sonar Beitrag anzeigen
Du greifst in deinem 2. Trace auf Daten zu, die noch nicht da sind. Flash wartet nicht mit der Ausführung des Codes…
hier schreibst du, "daten die noch nicht da sind".. warum sollten sie denn wieder weg sein.. naja, ich hab das problem gelöst.
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..
stibe ist offline   Mit Zitat antworten
Alt 09-12-2009, 22:25   #6 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
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)
sonar ist offline   Mit Zitat antworten
Alt 09-12-2009, 22:31   #7 (permalink)
Neuer User
 
Registriert seit: May 2006
Ort: Amsterdam
Beiträge: 57
Zitat:
Zitat von sonar Beitrag anzeigen
Und ist dir klar, was es mit deinem zusätzlichen "var-Thema" auf sich hatte..?
nein, ehrlichgesagt nicht. ich hätte gedacht, dass es irgendwas damit zu tun hat, ob die variable nur innerhalb der funktion verfügbar ist oder nicht..
stibe ist offline   Mit Zitat antworten
Alt 09-12-2009, 22:42   #8 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
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)
sonar ist offline   Mit Zitat antworten
Alt 09-12-2009, 22:45   #9 (permalink)
Neuer User
 
Registriert seit: May 2006
Ort: Amsterdam
Beiträge: 57
Zitat:
Zitat von sonar Beitrag anzeigen
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.
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...
stibe ist offline   Mit Zitat antworten
Alt 09-12-2009, 23:00   #10 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
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)
sonar ist offline   Mit Zitat antworten
Alt 09-12-2009, 23:05   #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?
stibe ist offline   Mit Zitat antworten
Alt 09-12-2009, 23:07   #12 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
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)
sonar ist offline   Mit Zitat antworten
Alt 09-12-2009, 23:09   #13 (permalink)
Neuer User
 
Registriert seit: May 2006
Ort: Amsterdam
Beiträge: 57
Zitat:
Zitat von sonar Beitrag anzeigen
Richtig.
alles klar! vielen dank für deine geduld und deine infos!
stibe ist offline   Mit Zitat antworten
Alt 09-12-2009, 23:25   #14 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
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)
sonar ist offline   Mit Zitat antworten
Alt 09-12-2009, 23:27   #15 (permalink)
Neuer User
 
Registriert seit: May 2006
Ort: Amsterdam
Beiträge: 57
Zitat:
Zitat von sonar Beitrag anzeigen
Solang's was bringt…
ja, hat es definitiv..
stibe 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


Ä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


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:14 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele