| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Dec 2004
Beiträge: 31
| setInterval -> Interval per Variable steuern?
moin, gibt es irgendeine Möglichkeit, unter ActionScript bei setInterval das Intreval per Variable zu steuren bzw. zu verändern? Ich hab hier nämlich verschiedene Aktionen, die der Reihe nach, aber mit unterschiedlichen Zeit-Abständen ausgeführt werden sollen. Quasi die erste nach 3 Sekunden , die zweite nach 5 Sekunden, die dritte nach 2 Sekunden usw. Mein Problem ist, dass meine Variable "intervalzeit" beim ersten Interval ganz ignoriert wird, die Aktion wird also sofort ausgeführt. Bei den anderen Interwal nimmt sich Flash immer den Anfangswert und nicht die Werte, die ich in meiner Funktion immer wieder neu ausgebe. Hier der aufs wesendliche reduzierte AS-Code: Code: count = 1;
intervalzeit = 1000;
function lieblingsfunktion() {
switch (count) {
case 1 :
trace("case 1");
intervalzeit = 2000;
nextcase = 2;
count = 0;
hans._x = 300;
break;
case 2 :
trace("case 2");
intervalzeit = 3000;
nextcase = 1;
count = 0;
hans._x = 200;
break;
default :
break;
}
}
function counter() {
count = nextcase;
}
testinterval = setInterval(counter, intervalzeit);
updateAfterEvent();
onEnterFrame = lieblingsfunktion; Was ist an meiner Vermutung dran? Geht das, was ich vorhabe überhabt? Wenn ja, was hab ich falsch gemacht? Grüße Bestboy |
| | |
| | #2 (permalink) |
| voidboy Registriert seit: Sep 2004 Ort: München
Beiträge: 5.588
|
Der Aufruf von "updateAfterEvent" ist an der Stelle Sinnlos. Wenn man ein Intervall mit "setInterval" erstellt kann man die Zeit nicht ändern da du ihm ja keine Referenz auf die Variable übergibst sondern den Wert der Variablen. Wenn du aber das Intervall eventuell nach einer anderen Zeit starten willst musst du es mit clearInterval( ... ) löschen und ein neues starten. |
| | |
| | #4 (permalink) |
| voidboy Registriert seit: Sep 2004 Ort: München
Beiträge: 5.588
|
Ja, sobald du das Intervall in anderen Abständen ablaufen lassen willst als wie du es erstellt hast dann musst du dieses löschen und ein neues mit deinem gewünschtem Wert setzen. Wie oft wird den so ein Intervall von dir ausgeführt bevor es eine andere Zeitspanne erhält? |
| | |
| | #5 (permalink) |
| Neuer User Registriert seit: Dec 2004
Beiträge: 31
|
Das würde jewils 1mal ablaufen, bzw. wenn alle Zeitspannen durch sind, ginge das halt wieder von vorne los. Die Reihe der verschiedenen Zeitspannen möchte ich am liebsten zufällig festlegen. Ist ein Interval dafür denn überhaubt zu empfehlen, oder würdest du das anders lösen? |
| | |
| | #6 (permalink) |
| voidboy Registriert seit: Sep 2004 Ort: München
Beiträge: 5.588
|
Ich würde eine Funktion setTimeOut schreiben die quasi ein Intervall nur einmal ausführt und dieses automatisch löscht. Oder halt 3 Intervalle starten aber dann so das es wirkt als würde man dauernd zwischen diesen wechseln, also die Zeitspanne vergrössern. Da du es aber dynamisch haben willst ist Variante 1 besser... |
| | |
| | #7 (permalink) |
| Neuer User Registriert seit: Dec 2004
Beiträge: 31
|
Du würdest also eine Funktion schreiben, die sich immer wieder per Interval selbst aufruft, richtig? Ich weis nicht so ganz, wie ich das angehen soll, aner ich versuchs mal und schreib das ergebnis hierein, oder meld mich wenns nicht klappt. |
| | |
| | #8 (permalink) |
| Neuer User Registriert seit: Dec 2004
Beiträge: 31
|
Okay, hier mal mein Versuch. Ich hab zwei Intervalle gebraucht: 1 Kick-Off Intervall, welches die Function zumersten mal aufruft und dann halt Das aus der setTimeOut-Function. Code: time = 100;
kickOff = setInterval(setTimeOut, 200);
function setTimeOut() {
clearInterval(timeOut);
trace("tach "+time);
time *= 2;
timeOut = setInterval(setTimeOut, time);
clearInterval(kickOff);
} Geändert von bestboy (03-05-2006 um 16:03 Uhr) |
| | |
| | #9 (permalink) |
| voidboy Registriert seit: Sep 2004 Ort: München
Beiträge: 5.588
|
Naja ne setTimeOut hatte ich mir eher so vorgestellt: PHP-Code: Diese ( neue ) Funktion löscht dann quasi das Intervall und ruft die gewünschte Funktion dann auf. Nachteil bei dieser Variante solche Aufrufe funktionieren leider nicht: PHP-Code: ).Und wenn du willst das deine Funktion schon vorher einmal aufgerufen wird dann müsstest du das so machen: PHP-Code: Geändert von rendner[i] (04-05-2006 um 09:18 Uhr) |
| | |
| | #10 (permalink) |
| Neuer User Registriert seit: Dec 2004
Beiträge: 31
|
Das ich nicht das allerbeste SctionScript schreibe, is mir klar. Ich bin eher Gestalter und als Programmierer.Mein Script hat gegenüber deinem für mich den Vorteil, das ich es verstehe ![]() Bei deiner Variante Blick ich irgendwie nicht durch. Insbesondere verstehe ich nicht, wie da immer wieder ein neues Intervall gestartet wird?! Ich möchte das nur ungerne blind rüberpasten... |
| | |
| | #11 (permalink) | |
| voidboy Registriert seit: Sep 2004 Ort: München
Beiträge: 5.588
| Zitat:
Nun kannst du das mit deinen verschiedenen Zeitwerten steuern ohne das du Intervalle selber löschen musst. Darum ging es dir doch, oder ? Geändert von rendner[i] (04-05-2006 um 09:56 Uhr) | |
| | |
| | #12 (permalink) |
| voidboy Registriert seit: Sep 2004 Ort: München
Beiträge: 5.588
|
Hier nochmal eine überarbeitet Version die jetzt genauso wie das setInterval funktionieren müsste ( von der Parameterübergabe ). PHP-Code: PHP-Code: Geändert von rendner[i] (04-05-2006 um 10:20 Uhr) |
| | |
| | #13 (permalink) |
| Neuer User Registriert seit: Dec 2004
Beiträge: 31
|
Hattest du das Script schon fertig, oder hast du die extra geschrieben? Bei dem Script, welches du als letztes gepostet hast, sind zuviehel Befehle, die mir neu sind. Von daher hab ich das erste für meine Zwecke umgeschrieben: PHP-Code: Du warst übrigens vollkommen zurecht skeptisch, was meinen ersten SetTimeOut-Versuch anbelengt, die Funktion war nämlich dafür verantwortlich dafür, das mein Film den Prozessor ausgelastet hat. Geändert von bestboy (04-05-2006 um 10:35 Uhr) |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |