AS-Befehl verzögern

harrry

Erfahrenes Mitglied
Schon die zweite Frage heute: ich suche eine einfache (!) Möglichkeit, einen Funktionsaufruf, der zusammen mit anderen solchen in einem Schlüsselbild steht, um ein oder zwei Sekunden zu verzögern. Also zuerst soll alles ablaufen, was da so alles drinnen steht - und erst ne Sekunde später soll dann erst der nämliche Befehl ausgeführt werden:
PHP:
machdas();
Sicher könnte ich von einem Schlüsselbild zum andern springen (genau, "ich"...*g*), aber davon wurde mir hier im Zusammenhang mit gescripteten Abläufen immer wieder abgeraten und das wohl aus gutem Grund. Ich hab auch nachgelesen bei "getTimer", setIntervall" und solchen Sachen, aber mein Eindruck war, dass das alles womöglich sehr prozessorbelastend ist und meine Animationen darunter dann erst recht leiden.

Daher die Frage: gibts nicht was ganz Simples, das man zur der Funktion dazuschreibt ("wart mal eben")?

Liebe Grüße, H.
 
Hi,

"setInterval" arbeitet meines Wissens nicht "prozessorbelastend" - zumindest, wenn Du nicht dauernd Intervalle im Millisekundenbereich erstellst:
Code:
var iv = setInterval(this, "machdas", 1000); // Funktion nach einer Sekunde ausführen

function machdas() {
    clearInterval(iv); // Wichtig: Intervall wieder löschen
    // hier was machen
}

Gruß
.
 
@umlart: Richtig, aber ich bevorzuge inzwischen meist die andere Variante, da Dir sonst die Referenz auf "this" (die lokale Zeitleiste) verloren geht, die in den aufgerufenen Methoden oft gebraucht wird. Das nur zur Ergänzung. :)

Gruß
.
 
Entschuldigung, dass ich nochmal dazu was wissen will, aber wie ist das jetzt mit umlarts Kurz-Variante: sie funktioniert bei mir schon auch:
PHP:
setTimeout(nameMeinerFunktion,2000);
...und sie wird auch nur einmal aufgerufen (bzw. jedesmal, wenn halt der entsprechende Ablauf vom User angewählt wird)... aber ist hier denn kein "clearInterval" nötig? Oder läuft da irgendein Sekundenzähler im Hintergrund weiter?

Paranoid, gell?
 
Hi,

umlarts Variante funktioniert immer dann, wenn Du in der Funktion "machwas" keinen Zugriff auf die lokale Zeitleiste per "this" benötigst:
Code:
var iv = setInterval(machWas, 1000);

function machWas() {
	trace("hier: " + this);
}
Du wirst im Sekundentakt "undefined" ausgegeben bekommen (und ja, das Intervall läuft weiter, bis Du es löschst). Alternativ kannst Du Dir vorher eine Variable erstellen, die auf die lokale Zeitleiste verweist:
Code:
var that = this;

var iv = setInterval(machWas, 1000);

function machWas() {
	trace("hier: " + that);
}
, oder Du wendest - wie gesagt - die von mir genannte Syntax an.

Gruß
.
 
Zurück