Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 20-02-2004, 20:16   #1 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 11
immer wieder: Warten auf Variable..

Hallo Ihr lieben hilfsbereiten Leute,
ich habe nun x-mal das Forum durchwühlt und immernoch keine (passende) Antwort gefunden, auch wenn die Frage eigentlich schon oft gestellt wurde. Deshalb nerv nun auch ich mit:
Ich habe im ersten Frame meines Hauptfilms zwei Funktionen, die mir am Ende je eine Variable ausgeben. Das das teilweise etwas länger dauert, möchte ich auf die Variablen warten, bevor ich mit dem Script fortfahre. Da die Wartezeiten immer wieder unterschiedlich sind, möchte ich jedoch nicht mit setInterval arbeiten, eher mit einer Schleife, jedoch ohne dass das Script sich aufhängt. Hat jemand eine Lösung?
Ich wär Euch so dankbar, zerbrech mir schon seit Stunden den Kopf.
Gretelmari ist offline   Mit Zitat antworten
Alt 20-02-2004, 20:19   #2 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Und wenn du einfach einen stop reinsetzt, und erst wenn die beiden Variablen da sind, geht's weiter? Evtl. Rückgabewert der Funktionen...? Nur mal so als Idee...
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist offline   Mit Zitat antworten
Alt 20-02-2004, 20:20   #3 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
könnte man die Funktionen mal anschaun?
__________________
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muß erst gehen lernen"
RustyCake ist offline   Mit Zitat antworten
Alt 20-02-2004, 20:39   #4 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 11
Mann, seid Ihr fix,vielen Dank schon einmal.
Also, bin noch recht neu hier und das Antworten ist noch aufregend für mich Entschuldigt die Verzögerung.

@RustyCake
Das Script ist stark gekürzt und ein bisschen aus dem Kontext gerissen, sollte aber zu verstehen sein. Vielleicht.

ActionScript:
  1. Das Script ist stark gekürzt und ein bisschen aus dem Kontext gerissen, sollte aber zu verstehen sein.
  2.  
  3. function linArray(success) {
  4.    if (success) {
  5.     //Also, hier wird ein großes Array mit den Daten aus einer vorher eingelesenen XML-Datei gefüllt
  6.       trace("Schritt 3: linArray abgearbeitet");
  7.       trace("Schritt 4: linienAnzahl: " + lAnzahl); //linenAnzahl wird in der funktion gesetzt
  8.       linienFertig = true; //die globale variable linienFertig wird außerhalb der funktion false gesetzt, wenn sie "true" ist, möchte ich gerne weitermachen.
  9.       trace("Schritt 5: linienFertig, müssten true sein: " + linienFertig);
  10.    }


@sonar
ich tu mich mit den Anfängen schwerer als ich dachte - wie bekomm ich das Script denn nach einem stop() zum weiterlaufen? Ich mein, es hört doch da auf, da kann ich doch dahinter schreiben, was ich will, und es wird nicht beachtet, oder nicht?
Gretelmari ist offline   Mit Zitat antworten
Alt 20-02-2004, 20:40   #5 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 11
oh, war wohl ZU aufregend, da fehlt die Hälfte moment..
Gretelmari ist offline   Mit Zitat antworten
Alt 20-02-2004, 20:42   #6 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 11
Auf ein Neues..
ActionScript:
  1. function linArray(success) {
  2.    if (success) {
  3.     //Also, hier wird ein großes Array mit den Daten aus einer vorher eingelesenen XML-Datei gefüllt
  4.       trace("Schritt 3: linArray abgearbeitet");
  5.       trace("Schritt 4: linienAnzahl: " + lAnzahl); //linenAnzahl wird in der funktion gesetzt
  6.       linienFertig = true; //die globale variable linienFertig wird außerhalb der funktion false gesetzt, wenn sie "true" ist, möchte ich gerne weitermachen.
  7.       trace("Schritt 5: linienFertig, müssten true sein: " + linienFertig);
  8.    }
  9. }
  10.  
  11. _global.linien = [];
  12. _global.linienFertig = false;
  13.  
  14. // XML einlesen
  15. lin_xml = new XML();   
  16. lin_xml.ignoreWhite = true;
  17. lin_xml.onLoad = linArray;
  18. lin_xml.load("linien.xml");
  19.  
  20. trace("Schritt 2: linArray aufgerufen");
  21.  
  22. if (linienFertig){
  23.     trace("Schritt 6: jetzt kann es weitergehen");
  24.     gotoAndPlay(2);
  25. }
Gretelmari ist offline   Mit Zitat antworten
Alt 20-02-2004, 23:03   #7 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Na ich kenn ja jetzt nicht die weitere Architektur deines Flashfilms, aber wenn du vor dem Skript einfach ein stop(); reinsetzt, sollte doch genau das passieren, was du willst, weil wenn "linienFertig == true", geht's doch weiter...
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist offline   Mit Zitat antworten
Alt 20-02-2004, 23:13   #8 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Hallo Gretelmari,

setz doch deinen play befehl in die onload-funktion, dann kannst du dir die geschichte mit der variable sparen.

ActionScript:
  1. stop();
  2.  
  3. function linArray(success) {
  4.         if (success) {
  5.                 //Also, hier wird ein großes Array mit den Daten aus einer vorher eingelesenen XML-Datei gefüllt
  6.                 trace("Schritt 3: linArray abgearbeitet");
  7.                 trace("Schritt 4: linienAnzahl: " + lAnzahl); //linenAnzahl wird in der funktion gesetzt
  8. gotoAndPlay(2);
  9.         }
  10. }
  11.  
  12. _global.linien = [];
  13.  
  14. // XML einlesen
  15. lin_xml = new XML();
  16. lin_xml.ignoreWhite = true;
  17. lin_xml.onLoad = linArray;
  18. lin_xml.load("linien.xml");

mfg r
bokel ist offline   Mit Zitat antworten
Alt 20-02-2004, 23:35   #9 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 11
Hallo und Danke, Ihr zwei trotz des späten abends immernoch so fleißigen Helfer,
@sonar
also, ich hatte in meinen Versuchen schon ein "stop();" gestetzt, allerdings in einer Schleife. Ich hab abgefragt, ob die Daten schon da sind, wenn nicht, dann Stop. Nur hat sich mein Script daran aufgehangen. Obwohl ich mich auch mit Büchern z.B. von Colin Moock durchzuschlagen versuche, scheine ich Neuling zu bleiben und weiss immernoch nicht, wo und wie ich das stop setzen muss, damit mein script a) sich nicht aufhängt oder b) einfach aufhört. Wie kann ich meinsmem Script klar machen, dass es nach dem Stop weiter machen soll? Zum Verständnis: Ich dachte bisher, dass ich einen stop setze, wenn ich will, dass das Script aufhört, nie wieder weiter macht. Hab ich vielleicht falsch verstanden, aber in der Hilfe hab ich nichts besseres gefunden. Wie sag ich meinem script (außer in einer Schleife), dass ich unter bestimmten Bedingungen (nämlich, wenn meine Variablen da sind) nach dem stop weiter gehen will?

@ bokel
Danke, dass auch Du Dich meiner annimmst. Das Problem ist nur, dass ich zwei Ffunktionen ähnlicher Art habe, die eigentlich gleichzeitig abgearbeitet werden (beide schreiben aus je einem zuvor geladenen xml-file ein array). da ich nicht sagen kann (verändern sich öfter), welche von den zwei Funktionen als erste "fertig" ist , kann ich das folgende Script nicht an eine von den beiden Funktionen binden. Ich müsste also sicher sein, dass beide Funktionen ausgeführt sind, befor ich den nächsten Frame aufrufe.

So viel Dank für diese Unterstützung!
von Gretel(mari)
Gretelmari ist offline   Mit Zitat antworten
Alt 20-02-2004, 23:57   #10 (permalink)
Neuer User
 
Registriert seit: Feb 2004
Beiträge: 66
Hi...

Ok, hab ich das richtig verstanden: Du willst auf das erfolgreiche
Ergebnis zweier Datenverarbeitungsfunktionen warten und erst
wenn beide 'true' melden soll es weitergehen?

Dann machst Du zwei Kontrollvariablen à la 'linienFertig', setzt
diese initial auf false und erst nach erfolgreicher Verarbeitung
jeweils auf 'true'.

Und Du machst eine dritte Funktion, die von den beiden
Datenverarbeitern aufgerufen wird. Diese prüft, ob beide
Kontrollvariablen 'true' sind, bricht wenn nicht vorzeitig ab
oder schickt den Film weiter, wenn alles passt.

ActionScript:
  1. function progressForSuccess () {
  2.    
  3.     //linienFertig == false, dann abbrechen
  4.     if (!linienFertig) {
  5.         return;
  6.     }
  7.    
  8.     //andereKontrolle == false, dann abbrechen
  9.     if (!andereKontrolle) {
  10.         return
  11.     }
  12.    
  13.     //alles klar, dann geht weiter
  14.     gotoAndPlay (2);
  15.  
  16. }

Hoffe, daß hilft...

Viele Grüße,

kriegerpoet
kriegerpoet ist offline   Mit Zitat antworten
Alt 21-02-2004, 00:07   #11 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Na das wird ja immer doller

Du könntest ein Zahl benutzen, die jeder gestartete Vorgang um eins erhöht und jeder beendete Vorgang um eins verkleinert. Wenn die Zahl 0 erreicht, bist du fertig.

ActionScript:
  1. stop();
  2. vorgaenge = 0;
  3.  
  4. //starte vorgang 1
  5. ...
  6. // erhöhe die anzahl der vorgänge
  7. vorgaenge += 1;
  8.  
  9. //starte vorgang 2
  10. ...
  11. // erhöhe die anzahl der vorgänge
  12. vorgaenge += 1;
  13.  
  14. //starte vorgang 3
  15. ...
  16. // erhöhe die anzahl der vorgänge
  17. vorgaenge += 1;
  18.  
  19. .....
  20. // wenn ein vorgang fertig ist,
  21. // und er seinen onLoad abgearbeitet
  22. // hat, kannst du die anzahl der
  23. // vorgänge wieder um eins verkleinern
  24. // und prüfen, ob sie 0 ist.
  25. vorgaenge -= 1;
  26.  
  27. // ist alles fertig ?
  28. if( vorgaenge == 0){
  29.        // ja, dann ist alles erledigt
  30.       gotoAndPlay(2);
  31. }

mfg .r
bokel ist offline   Mit Zitat antworten
Alt 21-02-2004, 01:05   #12 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 11
hallo Ihr holden Helden,
@kriegerpoet:
ich hab Deine Version so in mein Script übernommen, jedoch hat es leider trotzdem nicht finktioniert. ich versuch es morgen im wacheren Zustand noch einmal

@kriegerpoet und bokel
Oh weh, ich wollte es ja nicht, aber da so eine lange Pause zwischen den Antworten entstanden ist, hab ich zum Rotweinglas gegriffen.. Daher muss ich mich wohl oder übel jetzt schon für Eure Bemühungen bedanken und wünschte, ich hätte sie vorher erahnt und nix getrunken, damit ich jetzt noch fit wär. Es wär schön, wenn Ihr mir ungeachtet dessen (morgen?) noch bei meinen Tipelschritten (zum Fahrstuhl ) behilflich sein könntet.
Ich danke Euch so sehr für Eure Antworten, und Bokel, ich würde Dir gern so kompetent wie möglich antworten, aber es ist schon so spät..
Morgen ist mehr Mühe angesagt, ich hoffe, Ihr habt Verständnis
Gretelmari 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 15:50 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele