Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 30-10-2003, 08:50   #1 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 45
return gibt nichts zurück

Hallo Flasher,

ich habe eine datei.as, die ich in meine fla include.
in dieser datei.as habe ich eine Funktion, die ein Array zurückgeben soll. die funktion funzt einwandfrei, hab ich an allen Stellen mit trace getestet, allerdings gibt sie nix zurück.

habt ihr eine idee, was ich da machen kann?


funktion in datei.as:

ActionScript:
  1. function getCategories(){
  2.     var myArray = new Array();
  3.     var cID = new Array();
  4.     var cName = new Array();
  5.     var cDescription = new Array();
  6.     var cParentID = new Array();
  7.     var categories = new Request();
  8.     categories.getAllCategories();
  9.     categories.request_xml.sendAndLoad(_global.JSPPathCM, categories.result_xml);
  10.     categories.result_xml.onLoad = function(){
  11.         categories.getParameter();
  12.         for (var i = 0; i<countChildNodes(categories.result_xml.firstChild.firstChild); i++) {
  13.             cID[i] = categories[i].categoryID;
  14.             cName[i] = categories[i].categoryName;
  15.             cDescription[i] = categories[i].categoryDescription;
  16.             cParentID[i] = categories[i].categoryParentID;
  17.         }
  18.         myArray = [cID, cName, cDescription, cParentID];
  19.        
  20.     }
  21.         return myArray;
  22. };

hiermit will ich in meiner fla auf den Array zugreifen:

ActionScript:
  1. var myNewArray = getCategories();
  2. trace(myNewArray[0]);

Vielen Dank für eure hilfe

Susanne
susanne_svs ist offline   Mit Zitat antworten
Alt 30-10-2003, 09:10   #2 (permalink)
.
 
Registriert seit: Jul 2003
Ort: Berlin
Beiträge: 32
Hallo Susane,

noch keine lösung aber ein schritt zur fehlerbeseitigung.

sendAndLoad() sollte erst nach der onLoad() anweisung aufgerufen werden.

beste grüße
rickenbacke
rickenbacke ist offline   Mit Zitat antworten
Alt 30-10-2003, 09:12   #3 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 45
hö, ich hab das sendAndLoad aber immer vor der onLoad aufgerufen..das hat auch funktioniert...
ich muss ja erst den request schicken, bevor ich den result bekomme
susanne_svs ist offline   Mit Zitat antworten
Alt 30-10-2003, 09:14   #4 (permalink)
.
 
Registriert seit: Jul 2003
Ort: Berlin
Beiträge: 32
ja aber sollte erst feststehen wie ausgewertet werden soll
rickenbacke ist offline   Mit Zitat antworten
Alt 30-10-2003, 09:21   #5 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 45
also in den Arrays cId, cName usw. steht auf jeden fall was drin, was ich mit trace überprüft habe,
aber das mit dem return funzt eben net
susanne_svs ist offline   Mit Zitat antworten
Alt 30-10-2003, 09:23   #6 (permalink)
ActionScripter
 
Benutzerbild von leroy
 
Registriert seit: Jun 2003
Ort: Paderborn
Beiträge: 140
Ich bin nicht 100% sicher, aber ich glaube, dass das Problem daran liegt, dass der Wert zu früh zurückgegeben wird. Daher liefert deine Funktion das leere Array zurück.

Du solltest das so ändern, dass du in der onLoad-Funktion eine andere aufrufst:

ActionScript:
  1. categories.result_xml.onLoad = function(){
  2.   myArray = new Array();
  3.   // Deine Auswertung
  4.   trace(myArray[0]);                 
  5. }

sollte funktionieren. Die letzte Zeile sollte durch _level0.arrayAuswerten(myArray) für weitere Berechnungen ersetzt werden. Du musst dann nur noch eine Funktion arrayAuswerten schreiben. Beispielsweise

ActionScript:
  1. function arrayAuswerten(myArray) {
  2.   var myNewArray = myArray;
  3.   trace(myNewArray[0])
  4. }

Das mag jetzt etwas kompliziert klingen, aber dein Problem ist leider auch nicht trivial.

Grüße,
Markus
leroy ist offline   Mit Zitat antworten
Alt 30-10-2003, 09:28   #7 (permalink)
.
 
Registriert seit: Jul 2003
Ort: Berlin
Beiträge: 32
1.
mit onLoad begibst du dich in eine neue function und das scoping ändert sich deshalb musst du eine referenz (categories.ref = this) setzen.
2.
an der stelle des returns deiner getCategories function gibt es noch keinen gefüllten array da die onLoad function noch nicht ausgewertet ist

Geändert von rickenbacke (30-10-2003 um 09:33 Uhr)
rickenbacke ist offline   Mit Zitat antworten
Alt 30-10-2003, 11:17   #8 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 45
Unhappy

hmm...das problem ist, dass die daten für die funktion verfügbar sein müssen, die die getCategories() aufruft....

ich hatte jetzt auch gemacht, dass ich in der onLoad eine andere Funktion aufrufe, aber wie bekomme ich den Array dann an die aufrufende Funktion zurück??

getCategories() soll nämlich alle Daten holen, und die Funktionen, die getCategories aufrufen, sollen dann entscheiden, was damit gemacht wird(z.b. filtern)
susanne_svs ist offline   Mit Zitat antworten
Alt 30-10-2003, 11:24   #9 (permalink)
ActionScripter
 
Benutzerbild von leroy
 
Registriert seit: Jun 2003
Ort: Paderborn
Beiträge: 140
Zitat:
Geschrieben von susanne_svs
ich hatte jetzt auch gemacht, dass ich in der onLoad eine andere Funktion aufrufe, aber wie bekomme ich den Array dann an die aufrufende Funktion zurück??
Gar nicht. Du musst die Funktion aufteilen wie ich es beschrieben habe.

Grüße,
Markus
leroy ist offline   Mit Zitat antworten
Alt 30-10-2003, 11:29   #10 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 45
@ Markus


was genau soll denn deine funktion ArrayAuswerten() machen?
susanne_svs ist offline   Mit Zitat antworten
Alt 30-10-2003, 11:33   #11 (permalink)
ActionScripter
 
Benutzerbild von leroy
 
Registriert seit: Jun 2003
Ort: Paderborn
Beiträge: 140
Im Prinzip alles was in deinem ursprünglichen Skript nach:
var myNewArray = getCategories();
folgen sollte.

Grüße,
Markus
leroy ist offline   Mit Zitat antworten
Alt 31-10-2003, 12:57   #12 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 45
also, du meinst, dass ich anstatt meinen Array per return zurückzugeben, den an die funktion arrayAuswerten() weitergeben soll, richtig?

das problem dabei ist aber, dass ich die Daten irgendwie an die Funktion bekommen muss, die meine Funktion getCategories() aufruft.
das ist wichtig, weil ich mit unterschiedlichen Funktionen die getCategories() aufrufe, die sollten dann eben die Daten per return zurückbekommen, und weiter verarbeiten

gibt es keine möglichkeit, das return solange warten zu lassen, bis das onLoad() fertig ist?

Susanne
susanne_svs 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



Alle Zeitangaben in WEZ +1. Es ist jetzt 03:19 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele