| |||||||
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: Jan 2005
Beiträge: 64
| Array mit return() übergeben
Hi zusammen, Habe ein (recht banales) Problem mit dem zurückliefern eines Arrays aus einer Funktion. Ich gestehe vorweg, dass ich nicht aus der Action-Script Entwickler Ecke komme und daher vielleicht irgendein Noob-Fehler schuld ist. Hier mein Problem: Code: function loadXMLdaten(XMLfilename) {
var XMLdaten = new XML();//erstellt ein neues XML Objekt
XMLdaten.ignoreWhite=true;
XMLdaten.load(XMLfilename);//lädt das XML-file
XMLdaten.onLoad = function(success) {
datenContainer=new Array();
if (success) {
for (var i=0; i<XMLdaten.firstChild.childNodes.length; i++) {
datenContainer[['image'],[i]]=XMLdaten.firstChild.childNodes[i].attributes.image;
}
trace(datenContainer[['image'],[0]]); // KLAPPT WUNDERBAR
return datenContainer; // RÜCKGABE DES ARRAYS
} else {
trace('Fehler beim Laden des XML Files');
return false;
}
}
}
XMLdatenContainer=new Array();
XMLdatenContainer=loadXMLdaten("de_content.xml");
trace(XMLdatenContainer[['image'],[0]]); // HIER UNDEFINED!!?!? Danke vorweg & LG Mike
__________________ ------------------------------------------------- "Ein Blitzableiter auf einem Kirchturm ist das denkbar stärkste Mißtrauensvotum gegen den lieben Gott." |
| | |
| | #2 (permalink) |
| °.oO°O.o°.oO.o°O Registriert seit: Jun 2005 Ort: CH
Beiträge: 1.490
|
Hehe... ^^ Das wird nicht gehen...! onLoad ist ja eine Funktion an sich... und mit return wird lediglich diese beendet, nicht aber loadXML! Das einzige was dir übrig bleibt, ist, eine Funktion aufzurufen, die dir das ganze Weitere anstösst...
__________________ There is no way to happiness, happiness is the way! - Buddha |
| | |
| | #3 (permalink) | |
| mod_rewrite Registriert seit: Feb 2003 Ort: München
Beiträge: 15.621
| Zitat:
__________________ RTFM Wie man Fragen richtig stellt. Achim Bindannmalweg Money makes the world go round, fear makes it turn much faster. (New Model Army) | |
| | |
| | #4 (permalink) |
| Neuer User Registriert seit: Jan 2005
Beiträge: 64
|
hmpf, das erklärt mir auch warum trace() zuerst "undefined" und erst nachher "xmldatentestinhalt" ausgibt (obwohl es von der Logik her ja andersrum sein sollte)... Manno, wie ich Flash verfluche... arbeitet ja gegen alle prinzipien *grml* Vor allem das mit den success functions hab ich noch gar nicht durchblickt (kenn ich in keiner anderen Entwicklungsumgebung). Aber das hier eine function in der function ist leuchtet sogar mir ein ... Aber müsste dann nicht das Objekt "XMLdaten" den return Wert der Funktion zugewiesen bekommen?
__________________ ------------------------------------------------- "Ein Blitzableiter auf einem Kirchturm ist das denkbar stärkste Mißtrauensvotum gegen den lieben Gott." |
| | |
| | #6 (permalink) |
| Custom Title Registriert seit: Aug 2001
Beiträge: 467
| PHP-Code: Ich frag mich wie dass dann in anderen "Entwicklungsumgebungen" gelöst wird. Da wird man wohl auch kaum etwas einen Wert zuweisen können der noch nicht existiert.
__________________ ---::::: AVisioN :::::--- |
| | |
| | #7 (permalink) |
| Neuer User Registriert seit: Jan 2005
Beiträge: 64
|
?? ist onLoad nicht eine Methode des Objekts XML bzw. der hier vorliegenden Instanz "XMLdaten"?? WTF macht diese Methode damit? Der Array landet im Daten Nirvana, oder?? Gibt es einen eleganten Woraround?? Wie wärs mit der Variante einer neuen Funktion "getXMLArray" die in der success funktion aufgerufen wird und an die der Array übergeben wird??
__________________ ------------------------------------------------- "Ein Blitzableiter auf einem Kirchturm ist das denkbar stärkste Mißtrauensvotum gegen den lieben Gott." |
| | |
| | #8 (permalink) | |||
| °.oO°O.o°.oO.o°O Registriert seit: Jun 2005 Ort: CH
Beiträge: 1.490
| Zitat:
![]() Zitat:
Zitat:
)EDIT: Dafür bräuchte es allerdings gar keine Funktion!? Könntest ja auch direkt ne Variable auf scope setzen...!
__________________ There is no way to happiness, happiness is the way! - Buddha Geändert von bamboocha (21-02-2006 um 15:11 Uhr) | |||
| | |
| | #9 (permalink) |
| Neuer User Registriert seit: Jan 2005
Beiträge: 64
|
@AVisioN: Du warst schneller als ich ![]() Naja, ich arbeite großteils mit PHP5 und teilweise mit Java.. Dort gibt es keine möglichkeit funktionen innerhalb von funktionen zu deklarieren. Somit entsteht dieses Problem eigentlich gar nicht.... Abgesehen davon dürfte Flash hier ein wenig "Pseudo-Multithreading" betreiben. D.h. es wird die funktion ausgeführt ohne das auf einen return Wert gewartet wird. Anders kann ich mir nicht erklären, dass beim trace zuerst "undefined" und anschließend der korrekte Wert (der mit trace in der Funktion ausgegeben wird) angezeigt wird. Übrigens: function newXMLdata(XMLarray:Array){ wird nicht funktionieren, da ich noch Flash MX verwende wo eine Typdeklaration in der Parameterliste nicht gültig ist. (Zumindest hab ich das vorhin auch probiert und wurde gleich vom Interpreter böse geschimpft ![]() Ciao, Mike
__________________ ------------------------------------------------- "Ein Blitzableiter auf einem Kirchturm ist das denkbar stärkste Mißtrauensvotum gegen den lieben Gott." |
| | |
| | #10 (permalink) |
| Neuer User Registriert seit: Jan 2005
Beiträge: 64
|
@bamboocha: Zu Deinem Edit: Im Prinzip brauche ich die Funktionen alle gar nicht, ist aber einfach wesentlich übersichtlicher und eleganter als die Spaghetti-Code Variante ![]() Abgesehen davon muss ich mich erst an die ganze Frame und Bühnen Geschichte gewöhnen..
__________________ ------------------------------------------------- "Ein Blitzableiter auf einem Kirchturm ist das denkbar stärkste Mißtrauensvotum gegen den lieben Gott." |
| | |
| | #11 (permalink) | ||
| Custom Title Registriert seit: Aug 2001
Beiträge: 467
|
Hau die Typisierung raus dann klappts ![]() Zitat:
Aber auch in Java wartet ein solcher Aufruf nicht zwingend auf einen Rückgabewert. Wenn Du da externe Daten lädst definierst Du halt eine Callback Funktion oä. Zitat:
![]() Aber auch da passt das Klassensystem nicht so ganz zum MovieClip Konzept. Richtig stimmig wirds dann erst mit AS3.
__________________ ---::::: AVisioN :::::--- | ||
| | |
| | #12 (permalink) |
| Neuer User Registriert seit: Jan 2005
Beiträge: 64
|
Ja, habe leider nur Flash MX und das hat glaub ich nur AS2 oder so... Aber ich kenn mich mit den ganzen Compilern / Interpretern (oder wie das in diesem Fall auch immer heißen mag leider null aus.Dafür bin ich bei einem neuen Problem gelandet. Habe die Funktionen jetzt gekickt und bin zum guten alten Spaghetticode ala Basic zurückgekehrt ![]() Dennoch gibt es nach wie vor das selbe Phänomen. Er wartet nicht bis die .onLoad Methode true oder false liefert sonder ruft die Funktion auf unsd spaziert lustig im Quellcode weiter... Eigentlich ziemlicher Horror. PHP-Code: EDIT: Hatte noch ein trace() vergessen in der for-Schleife.. Ändert aber nichts an dem eigentlichen Problem...
__________________ ------------------------------------------------- "Ein Blitzableiter auf einem Kirchturm ist das denkbar stärkste Mißtrauensvotum gegen den lieben Gott." Geändert von Mik3e2 (21-02-2006 um 15:35 Uhr) |
| | |
| | #13 (permalink) |
| Neuer User Registriert seit: Jan 2005
Beiträge: 64
|
Sorry, war diesmal mein Fehler... var XMLdatenContainer=new Array(); funktioniert natürlich nicht. Mich macht dieser Misch-Masch aus Prozeduraler und Objektorientierter Programmierung noch wahnsinnig ![]() Danke Euch allen jedenfalls und werde Euch sicher noch öfters quälen, Ciao, Mike
__________________ ------------------------------------------------- "Ein Blitzableiter auf einem Kirchturm ist das denkbar stärkste Mißtrauensvotum gegen den lieben Gott." |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |