Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 12-07-2005, 16:11   #1 (permalink)
Neuer User
 
Registriert seit: Dec 2004
Beiträge: 43
for Schlaufe für 0.X Sekunden unterbrechen

Hi

Habe ein kleines AS Problem.

Ich habe eine for - Schlaufe, die mir MC erstellt. Nun sollen die MC's aber nicht gleichzeitig auf der Bühne erscheinen, sondern mit einer Pause von sagen wir 0.7 Sekunden.

Wie stelle ich das am besten an? Ich müsste irgendwie innerhalb der for-Schlaufe eine wait-Funktion haben, oder? Aber sowas gibts ja in AS nicht (ich habs im Handbuch auf alle Fälle nicht gefunden.)

Danke im voraus

Eazyjd
Eazyjd ist offline   Mit Zitat antworten
Alt 12-07-2005, 16:30   #2 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
Hi.

Erstelle die MC doch mittels setInterval().
Da kannst Du auf die Millisekunde genau
angeben, wie groß die Abstände sein sollen.
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------
thebiz ist offline   Mit Zitat antworten
Alt 12-07-2005, 17:06   #3 (permalink)
Neuer User
 
Registriert seit: Dec 2004
Beiträge: 43
Hmm.. das Problem ist, dass ich die MCs mittels for erstellen muss, da ich eine for Schlaufe mit for (i in matrix) habe.
Eazyjd ist offline   Mit Zitat antworten
Alt 12-07-2005, 17:36   #4 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Hi!
Dann schreib die Namen in ein Array:
ActionScript:
  1. arr = [];
  2. for (var i in matrix) {
  3.     arr.push(i);
  4. }
  5. trace(arr);
Und jetzt kannst du auch mit setInterval arbeiten .
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 12-07-2005, 17:36   #5 (permalink)
robo kalkühl
Gast
 
Beiträge: n/a
dann bastel die for-schleife halt um...
ActionScript:
  1. var i:Number = 0;
  2.  
  3. function bla () {
  4.     if(i>=10) {
  5.         clearInterval(intid);
  6.     }
  7.     else trace (i);
  8.     i++;
  9. }
  10.  
  11. intid = setInterval (bla, 500);
...so in etwa
  Mit Zitat antworten
Alt 13-07-2005, 00:21   #6 (permalink)
Neuer User
 
Registriert seit: Dec 2004
Beiträge: 43
hey, danke!
Habs mal nach dem Vorbild von robo kahlkühl gemacht.

Noch eine Frage:
Wie kann ich üperprüfen, ob bereits alle "i"'s abgearbeitet wurden? sobald dies der fall ist, sollte eine weitere kette von befehlen ausgeführt werden. Wie mach ich das?
(sorry für die n00b fragen bezüglich timing, aber ich war seit flash 4 nicht mehr mit AS aktiv, und da hat sich einiges geändert )

Gruss
Eazyjd ist offline   Mit Zitat antworten
Alt 13-07-2005, 00:24   #7 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
Das passiert doch beim if(i>=10).
Hier wird ja bei 10 abgebrochen.

In Deinem Fall müsstest Du dann
statt abzubrechen, etwas neues starten.
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------
thebiz ist offline   Mit Zitat antworten
Alt 13-07-2005, 11:23   #8 (permalink)
Neuer User
 
Registriert seit: Dec 2004
Beiträge: 43
ok, das hat soweit geklappt.
Nun hab ich aber immernoch das Problem, dass ein anderes AS für etwa eine Sekunde einfach stoppen sollte, da ich mit einer for-Schlaufe funktionen für rund 30 MC "gleichzeitig" aufrufe, und der nächste Befehl erst ausgeführt werden sollte, nachdem alle MCs über die besagte Funktion positioniert sind. (was in etwa 1.5 Sek. dauert).
Eazyjd ist offline   Mit Zitat antworten
Alt 13-07-2005, 12:25   #9 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Dann setz doch das Script in eine Funktion. Die kannst du dann aufrufen, wann es dir passt...
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 13-07-2005, 15:22   #10 (permalink)
Neuer User
 
Registriert seit: Dec 2004
Beiträge: 43
Zitat:
Zitat von Der Frager
Dann setz doch das Script in eine Funktion. Die kannst du dann aufrufen, wann es dir passt...
Ja, aber die Funktion soll erst 1.5 Sekunden nach der letzten Funktion, die aufgerufen wurde, aufgerufen werden...
(Irgendwie hab ich das Gefühl, dass niemand so recht sieht, was ich eigentlich will - oder ich sehe einfach nicht, wie ihr das lösen wollt )
Eazyjd ist offline   Mit Zitat antworten
Alt 13-07-2005, 15:57   #11 (permalink)
Co&Bold
 
Benutzerbild von Cysign
 
Registriert seit: Nov 2004
Ort: Troisdorf (bei Köln)
Beiträge: 170
also 1,5 sekunden warten kannst du mit nem interval.
etwa in der art:
ActionScript:
  1. var opi=0;
  2. function funny () {
  3.     if (opi == 0)
  4.         {
  5.                     opi = 1;
  6.         }
  7.     else {
  8.         clearInterval(derinterval);
  9.                 trace ("1,5sek sollten vorbei sein. was jetzt?");
  10.         }
  11.     }
  12. derinterval = setInterval(funny,1500);
__________________
Friede!

Geändert von Cysign (13-07-2005 um 16:00 Uhr)
Cysign ist offline   Mit Zitat antworten
Alt 13-07-2005, 18:32   #12 (permalink)
yeah!
 
Benutzerbild von rockstar
 
Registriert seit: Jun 2004
Ort: berlin
Beiträge: 103
genau diese routine brauche ich auch gerade.

ich hab sie in ein onLoad eines mc´s gepackt. leider funktioniert das dann nicht. den mc dupliziere ich auch noch 6 mal.

wie ist das mit der function definition: wird die global erzeugt und ich überschreibe sie quasi 6 mal? was muß ich davor setzen, wenn damit sie nur local gilt?

oder ist es eh besser die function außerhalb des mc, vielleicht in _root zu definieren und dann immer aufrufen? blöd ist dann halt, das die zählvariable global sein muß. aber anders gehts wohl nicht oder?
rockstar ist offline   Mit Zitat antworten
Alt 13-07-2005, 19:03   #13 (permalink)
yeah!
 
Benutzerbild von rockstar
 
Registriert seit: Jun 2004
Ort: berlin
Beiträge: 103
habs jetzt mal selber erweitert.

das hier steht in der _root

ActionScript:
  1. function wait(warte, mc) {
  2.     if (_root["i"+mc] == warte) {
  3.         clearInterval(_root[mc].derinterval);
  4.         _root[mc]._x = 400;
  5.         trace("fertig");
  6.     } else {
  7.         _root["i"+mc]++;
  8.         trace(_root["i"+mc]);
  9.     }
  10. }

das hier hängt am mc

ActionScript:
  1. onClipEvent (load) {
  2.     _root["i"+_name] = 1;
  3.     warte = 5;
  4.     derinterval = setInterval(_root.wait, 1000, warte, _name);
  5. }

klappt echt prima!

hier noch das komplette fla
Angehängte Dateien
Dateityp: zip test setinterval2.fla.zip (4,4 KB, 8x aufgerufen)
rockstar 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 04:11 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele