| |||||||
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: Nov 2010
Beiträge: 18
| Arraywertzuweisung außerhalb einer Funktion nicht definiert
Hallo zusammen, folgender Code ist zum auslesen von Links aus einer XML-Datei. Mein Problem ist jetzt das innerhalb der For-in Schleife die Werte des Arrays XMLlink_value augelesen werden können. Außerhalb ist die Länge des Arrays 0 und enthält keine Werte. Bin für jeden Vorschlag dankbar. vg Code: XMLlink_value = new Array();
XMLlink = new XML();
XMLlink.ignoreWhite = true;
XMLlink.load(filepath + "_xml/navigation.xml");
XMLlink.contentType = "text/xml";
myXML.onLoad = function(success)
{
if (success)
{
getLink();
}
else
{
trace("Fehler beim Laden der XML-Datei");
}
}
function getLink()
{
rootNode = XMLlink.firstChild;
for(index in rootNode.childNodes)
{
actNode = rootNode.childNodes[index];
XMLlink_value[index] = actNode.attributes["value"];
trace(XMLlink_value[index]);
}//
}//
trace(XMLlink_value.length); 0 Link1 Link2 Link3 Link4 Link5 Link6 Link7 |
| | |
| | #2 (permalink) |
| Flash-Designer Registriert seit: May 2006 Ort: Wiesbaden
Beiträge: 6.164
| Das hat nichts mit der for-Schleife zutun, sondern liegt daran, dass dieser Zugriff erfolgt bevor das XML geladen und verarbeitet wurde. Du kannst auf diese Daten erst dann zugreifen, wenn die Funktion onLoad ausgeführt wurde. Das erreicht man beispielsweise, wenn man diesen Befehl einfach am Ende der Funktion getLink aufruft!
__________________ Viele Grüße // Martin Martin Kraft // Interaktionsdesign Hilfreiche Websites: // Hilfe zur Adobe Flash Plattform // ActionScript 2 Referenz // ActionScript 3 Referenz // ActionScript 3 Arbeitshandbuch // weitere Flash Ressourcen Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da! |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Nov 2010
Beiträge: 18
|
Danke für den Tipp. Hab noch gesehen das die Fkt. falsch bezeichnet ist. Code: XMLlink_value = new Array();
XMLlink = new XML();
XMLlink.ignoreWhite = true;
XMLlink.contentType = "text/xml";
XMLlink.load("navigation.xml");
XMLlink.onLoad = function(success)
{
if (success)
{
rootNode = XMLlink.firstChild;
for(index in rootNode.childNodes)
{
actNode = rootNode.childNodes[index];
XMLlink_value[index] = actNode.attributes["value"];
trace(XMLlink_value[index]);
}//
}
else
{
trace("Fehler beim Laden der XML-Datei");
}
}//
trace(XMLlink_value[1]); Direkt nach dem Zuweisen der Werte aus der xml-Datei ist es möglich die Werte des Arrays (XMLlink_value) auszulesen. Nachdem abarbeiten der Fkt. onLoad erzeugt der Aufruf "trace(XMLlink_value[1]);" ein "undefined". Obwohl das Array global im Script definiert ist und ihm auch Werte zugewiesen werden. |
| | |
| | #4 (permalink) |
| brand new user Registriert seit: May 2002 Ort: Laimbach 6 1/2
Beiträge: 16.884
|
DEr trace wird geschossen/ausgeführt, bevor Dein Array werte bekommt!
__________________ Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake! "Wer tanzen will, muß erst gehen lernen" |
| | |
| | #6 (permalink) | ||
| Keine Panik Registriert seit: Apr 2010 Ort: Düsseldorf (im ernst)
Beiträge: 1.868
| Zitat:
Zitat:
ActionScript:
| ||
| | |
| | #7 (permalink) |
| Neuer User Registriert seit: Nov 2010
Beiträge: 18
|
Danke für den Hinweis aber es löst nicht das Problem. Wenn man eine Funktion aus der Funktion Onload heraus aufruft dann existiert die Funktion nur zur Laufzeit der Funktion Onload. Danach nicht mehr und genau so ist mit den Daten des Arrays. Innerhalb der aufgerufenen Funktion kann ich die Daten verarbeiteten. Außerhalb existieren sie nicht. Ich habe die Vermutung das die Abarbeitung des Flashmovies eine höherer Priorität hat als das Laden des XML-Files. Dh. die Daten stehen mit Beginn des Flashs noch garnicht zur Verfügung und werden erst am Ende geladen. Denn objekt.status liefert keine Fehler. vg |
| | |
| | #8 (permalink) | |||
| Keine Panik Registriert seit: Apr 2010 Ort: Düsseldorf (im ernst)
Beiträge: 1.868
| Zitat:
Flash wartet schlicht nicht mit der Abarbeitung, bis die Antwort vom Server da ist. Es schickt die Anfrage an den Server, sagt dem Postboten quasi: "Wenn Post kommt, bitte hier Klopfen" und macht weiter mit dem restlichen Code, bis der Postbote halt klopft. Und wenn er nicht klopft ist halt nichts angekommen. Zitat:
Zitat:
und nur weil sie (noch) nicht mit Werten gefüllt wurde heisst es nicht, dass es sie nicht gibt. | |||
| | |
| | #10 (permalink) |
| Flash-Designer Registriert seit: May 2006 Ort: Wiesbaden
Beiträge: 6.164
|
Du scheinst Dir Grundlagen der Codeverarbeitung nicht ganz verstanden zuhaben:
__________________ Viele Grüße // Martin Martin Kraft // Interaktionsdesign Hilfreiche Websites: // Hilfe zur Adobe Flash Plattform // ActionScript 2 Referenz // ActionScript 3 Referenz // ActionScript 3 Arbeitshandbuch // weitere Flash Ressourcen Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da! Geändert von Martin Kraft (15-11-2010 um 14:48 Uhr) |
| | |
| | #11 (permalink) | |
| Keine Panik Registriert seit: Apr 2010 Ort: Düsseldorf (im ernst)
Beiträge: 1.868
| Zitat:
die Lösung ist, alles was mit den Daten weiter gemacht werden soll, in irgendeiner Form von onLoad ausführen zu lassen. (siehe in meiem Beispiel die Funktion machWas()) Das ist eine sehr allgemeine Aussage, nur konkreter kann ich dir erst helfen, wenn ich weiss, was du vorhast. Geändert von thomas_E (15-11-2010 um 14:49 Uhr) | |
| | |
| | #12 (permalink) |
| Neuer User Registriert seit: Nov 2010
Beiträge: 18
|
Ich habe vor Urls aus einer XML-Datei zulesen. Diese Links sollen dann für ein Navigationsmenu zur Verfügung stehen. Mit dem onPress-Event und Geturl soll dann zu den Seiten gesprungen werden. Meine Idee ich lese die Links aus einer XML-Datei aus und schreibe sie in ein Array. Den Inhalt nehme ich dann für die GetUrl-Fkt. Nur bin ich am bisherigen Probleme hängen geblieben |
| | |
| | #13 (permalink) |
| brand new user Registriert seit: May 2002 Ort: Laimbach 6 1/2
Beiträge: 16.884
|
Servus Das was thomas_E, geschrieben hast, ist doch genau das was Du brauchst!
__________________ Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake! "Wer tanzen will, muß erst gehen lernen" |
| | |
| | #14 (permalink) |
| Neuer User Registriert seit: Nov 2010
Beiträge: 18
|
Moin, ja im Grunde schon. Nur tritt das Problem auf das alles was innerhalb der Onload passiert Fkt., genauer die Wert Zuweisung einer Variabel, außerhalb nicht definiert ist bzw. keine Werte enthält. Ein Versuch eine txt-Datei mit loadvariables brauchte das gleiche Ergebniss. Nur innerhalb der Onload-Fkt. sind die ausgelesenen Werte vorhanden. Aushalb nicht, obwohl sie an "global" definierten Variabeln übergeben wurden. Ich versuche es mal mit Pseudocode zu erklären. //Lese aus einer einer xml-Datei die URLs für ein Navigationsmenu XML-Datei-Aufbau(navigation.xml) Code: <?xml version="1.0" encoding="utf-8"?> <navigation> <link name = "link1" ziel= "link1.html"/> ... <navigation/> Code: programm XML-Auslesen
Definiere Array() linkziel
Definiere neues XML-Objekt
Übergebe (navigation.xml) an XML-Objekt
Aufruf Prozedur: Onload
Wenn die Datei naviagation.xml erfolgreich geladen dann
Durchlaufe alle Knoten von "navigation" und speicher
die Werte von "ziel" in dem Array "linkziel"
Wenn die Datei nicht erfolgreich geladen dann
Fehler ausgeben
Ende Prozedur Onload
//Anwendnung mit getURL
//Das Auslesen ergibt ein "undefined"
Rufe externe Webseite auf
oder
Geb den Inhalt des Arrays linkziel aus |
| | |
| | #15 (permalink) |
| brand new user Registriert seit: May 2002 Ort: Laimbach 6 1/2
Beiträge: 16.884
|
Ich versuchte Dir schon mit normalem Text, etwas zu erklären! thomas_E hat Dir in seinem Beitrag (Nr. 6) schon gezeigt wie es geht!!!
__________________ Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake! "Wer tanzen will, muß erst gehen lernen" |
| | |
![]() |
| Lesezeichen |
| Stichworte |
| array, funktion, xml |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Flex: XML-Result außerhalb einer private Funktion verwenden | Rohality | Flex programmieren | 3 | 14-10-2009 12:09 |
| Auf Varibale, definiert außerhalb einer Klasse, zugreifen | lindner | ActionScript 3 | 7 | 22-06-2009 06:04 |
| Variable außerhalb einer Funktion weiterverwenden | eugen2k | ActionScript 2 | 3 | 06-09-2007 11:31 |
| Variablen außerhalb der Funktion werden nicht übergeben | Blax_ed | ActionScript 2 | 5 | 10-05-2007 20:35 |
| inhalt eines array außerhalb einer funktion anzeigen | rok°! | ActionScript 1 | 6 | 24-03-2005 17:49 |