Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 05-09-2003, 21:36   #1 (permalink)
Entscheide Dich
 
Benutzerbild von YesNo
 
Registriert seit: Apr 2003
Ort: Düsseldorf
Beiträge: 218
Question wait state in as

Hallo,

Seit einiger Zeit schlage ich mich mit ein paar fscommands herum,
die verzögert results zurückgeben.
Also Variable mit denen ich weiter arbeiten muß.

Ich will nicht mit setInterval arbeiten und auch nicht Frames überspringen. Gibt es sonst noch Möglichkeiten auf eine variablen Wert zu warten?

Michael
YesNo ist offline   Mit Zitat antworten
Alt 05-09-2003, 21:40   #2 (permalink)
Revived @ Sunday
 
Benutzerbild von MacEvil
 
Registriert seit: Apr 2003
Ort: Nowhereland
Beiträge: 3.244
Warum kein setInterval ?
Geht doch gut so :
ActionScript:
  1. show = function (dievar) {
  2. trace(dievar);
  3. ok = true;
  4. }
  5. _root.onEnterFrame = function () {
  6. if (einevar == "blubb") {
  7.    showid = setInterval(show,2000,einevar);
  8. if (ok == true) {
  9. clearInterval(showid);
  10. }
  11. }
  12. }
MacEvil ist offline   Mit Zitat antworten
Alt 05-09-2003, 21:40   #3 (permalink)
HAY
Neuer User
 
Benutzerbild von HAY
 
Registriert seit: Aug 2002
Ort: Faust-Stadt
Beiträge: 2.577
hi
was meinst du mit "auf variable warten".
bis du sicher bist ob sie da ist!!!!
__________________
gruß Harry
HAY ist offline   Mit Zitat antworten
Alt 05-09-2003, 21:43   #4 (permalink)
Revived @ Sunday
 
Benutzerbild von MacEvil
 
Registriert seit: Apr 2003
Ort: Nowhereland
Beiträge: 3.244
Achja, noch mit fragen ob sie da is
ActionScript:
  1. show = function (dievar) {
  2.         trace(dievar);
  3.         ok = true;
  4. }
  5. _root.onEnterFrame = function () {
  6. while (einevar != undefined) {
  7. if (einevar == "blubb") {
  8. showid = setInterval(show,2000,einevar);
  9.                 if (ok == true) {
  10.                         clearInterval(showid);
  11. }
  12. }
  13. }
  14. }
MacEvil ist offline   Mit Zitat antworten
Alt 05-09-2003, 22:15   #5 (permalink)
netTrek
 
Benutzerbild von netTrek
 
Registriert seit: Jul 2001
Ort: 46282 Dorsten
Beiträge: 2.972
SWF-Studio fscommand?

Wie auch immer ... ich hab das mal mit watch gelöst - funktioniert zwar aber hat problme gemacht wenn du zu viele Variablen überwacht hast.

Daraufhin habe ich ne eigene Klasse gebaut die über onEnterFrame und co die Variablen überwacht hat - war eigentlich sehr zufrieden damit...

SABAN
__________________
Saban Ünlü

netTrek GmbH & Co. KG
Softwareentwicklung, Design & Konzeption
www.netTrek.de
netTrek ist offline   Mit Zitat antworten
Alt 06-09-2003, 08:43   #6 (permalink)
Entscheide Dich
 
Benutzerbild von YesNo
 
Registriert seit: Apr 2003
Ort: Düsseldorf
Beiträge: 218
He,

Vielen Dank für die vielen Antworten.

Tatsächlich geht es um's SWF Studio. Da werden die Rückgabewerte erst ein paar ms später ausgespuckt.
Nach Northcodes examples gehts mit setInterval, aber da wird dann rekursiv von einer function in die andere gehüpft und das gefällt mir nicht. Hier sollte mehr Freiheit bestehen.

OnEnterFrame ist auch so eine Sache. Naja, das ist glaube ich nur Flickwerk. Im setInterval wird eine Funktion immer wieder ausgeführt und aber gleichzeitig das ganze Script weiter durchlaufen. D.h. es nützt gar nichts eine andere Funktion aufzurufen bevor nicht das Intervall abgebrochen wurde. Das ist aber nötig, um im weiteren Verlauf in neuen Funktionen mit den Ergenissen arbeiten zu können. Ich benötige eine echte Wait until var ="blabla"; oder so.
(Der Rückgabewert kommt ja vom Flashplayer.)

Zitat:
Geschrieben von netTrek
SWF-Studio fscommand?
Daraufhin habe ich ne eigene Klasse gebaut die über onEnterFrame und co die Variablen überwacht hat - war eigentlich sehr zufrieden damit...
SABAN
Mmmh,

Kannst Du mir die mal posten?

Vielleicht kann ich auch was damit anfangen!?

Michael
YesNo ist offline   Mit Zitat antworten
Alt 06-09-2003, 11:20   #7 (permalink)
netTrek
 
Benutzerbild von netTrek
 
Registriert seit: Jul 2001
Ort: 46282 Dorsten
Beiträge: 2.972
Hi YesNo,

das gesamte Teil kann ich dir nicht geben da es im Auftrag eines Kunden entwickelt wurde aber ich kann dir die Überwachungsfunktion geben. Bitte bedenke, dass die etwas "komisch" auszieht da sie im Rahmen einer gesamten Klasse entwickelt wurde:


ActionScript:
  1. _global.wait4Var = function (sourceVar, fct, timeOutTime) {
  2.     timeOutTime = timeOutTime == undefined ? 2000 : timeOutTime;
  3.     if(wait4VarIndex == undefined) _global.wait4VarIndex = 0;
  4.     _global.wait4VarIndex ++;
  5.     var intervalID = "w4vIid"+wait4VarIndex;
  6.     _global[intervalID+"timer"] = getTimer();
  7.     _global[intervalID] = setInterval (function () {
  8.                                             if(eval(sourceVar) != undefined){
  9.                                                 fct(eval(sourceVar));
  10.                                                 clearInterval(_global[intervalID]);
  11.                                                 delete _global[intervalID+"timer"];
  12.                                                 delete _global[intervalID];
  13.                                                 _global.wait4VarIndex--;
  14.                                             } else if (_global[intervalID+"timer"]+timeOutTime < getTimer()){                                          
  15.                                                 fct("ERROR:TIMEOUT");
  16.                                                 clearInterval(_global[intervalID]);
  17.                                                 delete _global[intervalID+"timer"];
  18.                                                 delete _global[intervalID];
  19.                                                 _global.wait4VarIndex--;
  20.                                             }
  21.                                          },10);
  22. }
  23.  
  24. // Anwendungsbeispiel
  25. // diese funktion soll ausgeführt werden wenn die Variable _root.saban definert wurde und soll dann den Variablenwert ausgeben
  26. fertig=function(value){ trace(value);    };
  27. // Das ist nur ne Dummyfunktion damit _root.saban = "FOO" - automatisch nach 1.5 Sekunden gesetzt wird
  28. testID = setInterval(function(){
  29.                           _root.saban = "FOO";
  30.                           clearInterval(_root.testID);
  31.                       }, 1500);
  32. // Hier die eigentlich "wichtige" Funktion die die Überwachung initialisiert
  33. wait4Var("_root.saban",_root.fertig);

Und nach viel experimentieren und lesen hat man dann vielleicht eine Klasse, die wie folg SWF-Studio Anweisungen durchführt:

ActionScript:
  1. // mache ein Objekt der Klasse
  2. my_file = new FileStudio();
  3. //-----------------------------------------------------
  4. //erstelle für jede Anfrage eine Ereignismethode
  5. my_file.onDriverList = function (result) {
  6.     result = result.split(",");
  7.     writeResult("LAUFWERKE := \n"+result.join("\n"));
  8. }
  9. // rufe für die Ereignissmethode die Methode auf
  10. my_file.getDriverList();
  11. //------------------------------------------------------
  12.  

SABAN
__________________
Saban Ünlü

netTrek GmbH & Co. KG
Softwareentwicklung, Design & Konzeption
www.netTrek.de
netTrek ist offline   Mit Zitat antworten
Alt 06-09-2003, 11:28   #8 (permalink)
netTrek
 
Benutzerbild von netTrek
 
Registriert seit: Jul 2001
Ort: 46282 Dorsten
Beiträge: 2.972
Bevor ich es vergesse...es gibt einen Standardtimeout der auf 2 Sekunden gesetzt ist. Das kannst du so testen:

ActionScript:
  1. fertig=function(value){ trace(value);    };
  2. testID = setInterval(function(){
  3.         _root.saban = "FOO";
  4.         clearInterval(_root.testID);
  5. }, 2050);
  6. wait4Var("_root.saban",_root.fertig);

SABAN
__________________
Saban Ünlü

netTrek GmbH & Co. KG
Softwareentwicklung, Design & Konzeption
www.netTrek.de
netTrek 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:17 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele