Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 12-08-2005, 00:23   #1 (permalink)
Neuer User
 
Registriert seit: Aug 2005
Beiträge: 1
Intervall-Funktion

Hallo,

ich hoffe mir kann jemand helfen, ich sitze schon eine Weile an diesem Problem.

Folgender Code:

var x= setInterval( function() { machwas(); clearInterval( x ); }, 2000 );


sorgt dafür, dass machwas() nach 2 Sekunden ausgeführt wird. Nur einmal, da die Intervallfunktion sich sozusagen selber löscht.


In meinem Programm ist es jetzt aber leider so, dass diese Zeile mehrmals aufgerufen werden kann, auch bevor das erste Intervall abgelaufen ist.

Also zum Beispiel

/*1*/ var x= setInterval( function() { machwas(); clearInterval( x ); }, 2000 );
und dann (aus irgendeinem Grund) nach einer Sekunde die gleiche Zeile nochmal:
/*2*/ var x= setInterval( function() { machwas(); clearInterval( x ); }, 2000 );


Bei diesem Code sollte 2 Sekunden und 3 Sekunden nach Programmstart machwas() aufgerufen werden. Was aber passiert, ist, dass x durch /*2*/ einen neuen Wert bekommt, und in /*1*/ die Intervallfunktion (die ja zuerst aufgerufen wird) nicht mehr ihr eigenes Intervall löscht, sondern das von /*2*/.
/*1*/ läuft ewig weiter.


Ich kann das Problem nicht dadurch lösen, dass ich verschiedene Variablen für die Interval-IDs verwende, weil es sich wirklich um die *selbe* Zeile handelt.

Stellt euch z.B. folgendes Szenario vor: der Code steht im on( release ) von einer Schaltfläche und löst zwei Sekunden nach dem Draufklicken einen Sound aus. Man soll jetzt ein zweites Mal drücken können (bevor der erste Sound ausgelöst wurde).
Also: 2 Sekunden nach *jedem* Klick auf die Schaltfläche soll's piepen.


Wer hat eine Idee?? Ich verzweifle.

Danke, Felix
fezadow ist offline   Mit Zitat antworten
Alt 12-08-2005, 00:51   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
ActionScript:
  1. on (press) {
  2.     if (!si) si = [];
  3.     si.push(setInterval(function (nr) {
  4.         trace(nr);
  5.         machwas();
  6.         clearInterval(si[nr]);
  7.     }, 2000,si.length));
  8. }
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib 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 16:46 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele