Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 20-08-2003, 13:27   #1 (permalink)
Neuer User
 
Registriert seit: Dec 2002
Beiträge: 2
warten auf onload.....

hallo allerseits,

ich würde gerne folgendes programmieren

Code:
function meineFunktion() {

  myXML = new XML();
  myXML.load("einServlet");
  myXML.onData = function(src){
        _root.meineAntwort = src;
  }

  benutzeAntwort(_root.meineAntwort);

}
ich will also einfach Text vom Servlet bekommen und auswerten. Leider funktioniert das hier nicht, weil die onload-Methode erst später wie die benutzeAntwort-Funktion aufgerufen wird (asynchron).

Soweit alles klar. Doch was mach ich jetzt um auf die onload-Methode zu warten?

Code:
 
while ( _root.meineAntwort == undefined) ;
Setzt das die ganze flash-engine ausser Betrieb (was ist das bitte für ein Multithreading?) und sleep scheint es nicht zu geben... das folgende würde wohl funktionieren:

Code:
 
function meineFunktion() {

  myXML = new XML();
  myXML.load("einServlet");
  myXML.onData = function(src){
        _root.meineAntwort = src;
       benutzeAntwort( _root.meineAntwort);
  }
}
allerdins wird meineFunktion() von mehreren Stellen aufgerufen, und ich muss sicher sein, dass beim Rückkehren von meinerFunktion() alles ausgewertet ist, darum bringt diese Lösung nichts....

ich kann naürlich einem Flag arbeiten, und wasNachMeinerFunktionPassierenSoll() immer wieder bei jedem Frame aufrufen bis das geladen-Flag gesetzt war, aber das ist doch grausliger Programmierstil.

Weiss jemand eine _SCHÖNE_ Lösung dafür?

Danke schon mal und Grüsse
geo
geologin ist offline   Mit Zitat antworten
Alt 20-08-2003, 16:28   #2 (permalink)
Flash-Wüstling
 
Benutzerbild von pheidrias
 
Registriert seit: Dec 2001
Ort: Halle/Saale
Beiträge: 4.300
Du mußt deine Logik umstellen !

Flash ist nach wie vor ein framebasiertes Werkzeug und die ganzen Kommunikationen mit der Außenwelt brauchen immer mindestens eine Frame Zeit. Innerhalb eines Frames mit z.B. while zu warten ist also zwecklos --> die Anfragen werden sowieso immer erst dann losgeschickt, wenn das gesamte AS dieses Framezyklus ausgewertet wurde !

Deine Funktion kann nicht "warten". Dein Programm muß so geschrieben werden, daß es auf das Ereignis reagiert.

tanti saluti,
pheidrias
__________________
Ehrlich währt am LÄNGSTEN !
pheidrias ist offline   Mit Zitat antworten
Alt 20-08-2003, 17:19   #3 (permalink)
flashed Dude
 
Benutzerbild von tolleiv
 
Registriert seit: Mar 2002
Ort: _level0
Beiträge: 1.402
hallo
pheidrias hat recht aber du weißt bestimmt immernoch nicht weiter ?

also mach 4 leere Frames alles schlüsselbilder

pack deinen XML Lade Kram in den ersten Frame

der zweite bleibt frei

der dritte bekommt irgendwie sowas :

ActionScript:
  1. if(_root.meineAntwort == undefined)
  2.    gotoAndPlay(2);

und im vierten kannste deinen restlichen kram verstauen

mfg
__________________
Die Basis unseres Denkens ist das der Verstand sich selbst erkennt.
Kyle Broslovski


Eigenlob stinkt ~ fast immer

Geändert von tolleiv (20-08-2003 um 17:22 Uhr)
tolleiv ist offline   Mit Zitat antworten
Alt 21-08-2003, 09:26   #4 (permalink)
Neuer User
 
Registriert seit: Dec 2002
Beiträge: 2
hi,

ich hab schon befürchtet, dass es nur mit einer frames-warteschleife funktioniert.... das ist dann auch klar wie's funktioniert.

die sache ist nur, dass ich nur die serverkommunikation baue (und das ganze in include-dateien). ich hätte gerne
meinem Flasher die Möglichkeit geboten mit

if(myUser.login()) gotoAndPlay("loggedIn");

sich einzuloggen und dann gleich das Ergebnis zurückzugeben, eben wie man das aus "normaler" Programmierung gewöhnt ist. Jetzt muss ich's ihm leider kompliziert machen mit:

myUser.login();

und dann irgendwann;

if(myUser.isServerReady()) {
err = myUser.getLastError()
}


Aber vielleicht weiss ja doch noch jemand wie man's nach Variante 1 hintricksten könnte ?

greets
Geo
geologin ist offline   Mit Zitat antworten
Alt 21-08-2003, 21:54   #5 (permalink)
Flash-Wüstling
 
Benutzerbild von pheidrias
 
Registriert seit: Dec 2001
Ort: Halle/Saale
Beiträge: 4.300
Es ist einfach technisch unmöglich.

Du willst eine Funktion innerhalb eines Frames, deren Code aber mindestens zwei Frames (einen zum Anfordern, einen zum Empfangen und sicher noch einige zum warten) braucht !

Bring ihn dazu, entweder den Code in verschiedene Frames zu packen (also erst logIn und dann später den anderen Code) oder verklickere ihm ereignisorientierte Programmierung.

tut mir leid ,
pheidrias
__________________
Ehrlich währt am LÄNGSTEN !
pheidrias 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 11:19 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele