Timer - mehrmaliges zeitgleiches Ablaufen mehrerer Funktionen?!

heino-th

Erfahrenes Mitglied
Hallo,

Zurzeit bin ich gerade dabei mir eine Art Timer zu machen, der mich nach einer eingegebenen Zeit durch ein Signal alamiert.
Nun klappt das ganze auch wunderbar, wenn ich eine Zeit oder einen Zeitpunkt eingebe und die Funktion starten lasse, kommt nach der eingestellten Zeit auch der gewünschte Alarm.
Wenn ich nun aber so wie ich es brauche, mehrere gleichzeitig laufen lassen will, stosse ich auf das Problem, das Flash immer nur einmal abarbeitet und nicht wie z.b. gewünscht zweimal usw.

Nun ist meine Frage ob ihr irgendeine Lösung kennt, wie ich die selbe Funktion x-mal zur selben Zeit laufen lassen kann.

Wäre über eine Antwort sehr erfreut.

Danke schonmal

mfg heino
 
Hi,

mit setInterval kannst Du im Prinzip beliebig viele unabhängige Intervalle starten. Beachte nur, dass für jedes neue Intervall eine neue Intervall-ID vergeben wird. Beispiel:
Code:
var iv = new Array(); // für Intervall-IDs

function newInterval(_callback, timeout, doclear) {
	iv[iv.length] = setInterval(processInterval, timeout, _callback, iv.length, doclear);
	trace(iv);
}

function processInterval(_callback, id, doclear) {
	if (doclear) clearInterval(iv[id]);
	trace("Intervall " + id);
	_callback();
}

function test1() {
	trace("test1");
}

function test2() {
	trace("test2");
}

newInterval(test1, 500, false); // test1 kontinuierlich aufrufen
newInterval(test2, 1300, true); // test2 nur einmal aufrufen

Gruß
.
 
hm, leider kapier ich deinen Vorschlag gerade nicht ^^

Danke erstma für den Vorschlag.
Also, ich hab eine Funktion geschrieben, die mir ein Array mit allen Zeit/Datumsangaben zurückgibt, also ständig aktualisierend.
Dann hab ich eine zweite Funktion in der ich die erste Funktion benutze um den Zeitpunkt der eingegebenen Minuten auszurechnen, und die lass ich dann in einer onEnterFrame ständig mit der aktuelen Uhr vergleichen, wenns gleich bzw größer is, geschieht irgendne aktion :)
Nun ist eben das Problem,dass wenn ich die Funktion einmal aufrufe(durch button und textfeld indem dieMinuten übergeben werden) dann läuft alles so wie ich es gewollt habe, wenn ich aber nun wärend das ganze bereits einmal läuft, das ganze nochmals aufrufe, durhc zweites textfeld und button, dann bleibt die erste stehn, und nur die zweite läuft weiter.

Hoffe ich habe einigermaßen gut ausgefdrückt was ich meine xD

Danke trotzdem schonmal

mfg heino
 
Hi,

wenn Du das mit onEnterFrame machst, musst Du für jedes "Intervall" einen eigenen MovieClip (siehe createEmptyMovieClip) erstellen, indem Du die jeweilige onEnterFrame-Methode startest. Dann läufts auch parallel. ;)

Mit meinem Beispiel wäre es aber m.E. etwas einfacherer (und ressourcenschonender). Du müsstest beim Start des Intervalls lediglich die Differenz zwischen aktueller Zeit und der Endzeit ausrechnen, und diese als Parameter "timeout" der Funktion "newInterval" übergeben. Sag mir mal, in welchem Format Du die Zeit eingeben lässt, dann kann ich Dir ein kleines Beispiel fertig machen.

Gruß
.
 
Hm, hört sich gut an :)
Danke schonmal für die Tipps.

Ich vergeliche derzeit mit dem Timestamp, also ich rechne die eingegebene Zeit, z.b. von Minuten in Millisekunden und addiere sie zu dem aktuellen Timestamp, danach vergleiche ich den aktuellen, sich immer wieder mit dem durch das onEnterFrame aktualisierende TimeStamp.

Wäre erfreut wenn du mir mal ein Beispiel posten könntest, habe ehrlichgesagt noch nie was mit setIntervall gmacht, immer nur mit onEnterFram :D

Danke

mfg heino
 
Hi,

mir ist nicht ganz klar, woher Du diesen Timestamp bekommst - beziehst Du den von einem serverseitigen Script, oder verwendest Du das Date-Objekt?

Im Anhang mal ein Beispiel mit Date-Objekten. Du kannst beliebig viele der "timer"-MCs auf die Bühne ziehen, und in das untere Textfeld eine Endzeit (im Format "hh:mm:ss") eingeben. Sobald die jeweilige Zeit abgelaufen ist, blinkt die rechte Schalftläche kurz auf.

Gruß
.
 

Anhänge

Neue Beiträge

Zurück