Tobias Menzel
Erfahrenes Mitglied
Hallo,
wer oft mit setInterval und dynamisch eingeladenen/instanzierten MovieClips arbeitet, kennt das Problem: Bei einem Wechsel der Inhalte müssen ggf. alle Intervalle "per Hand" gelöscht werden, da diese sonst bis in alle Ewigkeit weiterlaufen, auch wenn das auslösende Objekt nicht mehr existiert.
Mit dieser kleinen Klasse (deren Existenz auf jenes Problem zurückgeht) lässt sich dieses Problem beheben; das "SmartInterval" prüft bei jedem Aufruf die Existenz des Zielobjektes und löschst sich ggf. selbst:
Aufruf z.B.:
Grüße,
Tobi
wer oft mit setInterval und dynamisch eingeladenen/instanzierten MovieClips arbeitet, kennt das Problem: Bei einem Wechsel der Inhalte müssen ggf. alle Intervalle "per Hand" gelöscht werden, da diese sonst bis in alle Ewigkeit weiterlaufen, auch wenn das auslösende Objekt nicht mehr existiert.
Mit dieser kleinen Klasse (deren Existenz auf jenes Problem zurückgeht) lässt sich dieses Problem beheben; das "SmartInterval" prüft bei jedem Aufruf die Existenz des Zielobjektes und löschst sich ggf. selbst:
Code:
class smartInterval {
var OBJ:Object;
function smartInterval(interval:Number, fn:Function, dest:MovieClip) {
OBJ = new Object();
OBJ.DC = dest;
OBJ.FN = fn;
OBJ.timestamp = getTimer();
OBJ.DC["stamp" + OBJ.timestamp] = OBJ.timestamp;
OBJ.interval = function() {
if (this.DC["stamp" + this.timestamp] == this.timestamp) {
this.FN();
} else {
clearInterval(this.IV);
}
}
OBJ.IV = setInterval(OBJ, "interval", interval);
}
}
Aufruf z.B.:
Code:
var iv1 = new smartInterval(8000, function() { doSomething(); }, this);
function doSomething() {
// sonstwas
}
Grüße,
Tobi