clearInterval Phänomen...

SonMiko

Erfahrenes Mitglied
Hallo zusammen,

ich hab mal ein paar Fragen zum clearInterval() Aufruf, die ich bisweilen nirgendswo direkt "ergooglen" konnte.

Wenn ich einen MovieClip per attach aus der Libary also der Bibliothek auf der Bühne platziere (per attachMovie), und in einem Schlüsselbild des "importierten" Clips dann irgendwo ein Funktionsaufruf zu finden ist welcher durch setInterval aufgerufen wurde,
wie lösche ich dann den Interval:

clearInterval(funktionsname());
oder
clearInterval(funktionsname);
oder
this.clearInterval(funktionsname()); bzw. this.clearInterval(funktionsname);?

Was passiert, wenn ich den gesamten Clip lösche (this.removeMovieClip()) -
was passiert dann mit der Funktion und dem Interval? Werden die dann automatisch mitgelöscht? Wenn ich den Clip mit einem neuen gleichnamigen und mit der gleichen Tiefe versehenem "überschreibe", werden dann alle Intervalle und Funktionen auch überschrieben


Wie beende ich denn eigentlich eine onEnterFrame Methode?
In der Referenz steht man muss onEnterFrame = Null setzen, wie ist das gemeint


Mal wieder Fragen über Fragen - tut mir echt leid, hab echt nirgends etwas gefunden und ich google schon seit ner Stunde (will nur nicht das jemand denkt, ich frage für jeden Käse nach).


Wenn jemand Zeit hat, wäre ich für Hilfe echt dankbar

Besten Gruß,


Euer


Mike
 
Hi,

Du löschst ein Intervall durch Angabe der Intervall-ID. Daher musst Du darauf achten, dass pro Intervall eine ID gespeichert (und nicht überschrieben) wird:
Code:
var iv = setInterval(test, 500);

var counter = 0;

function test() {
  counter ++;
  trace(counter);
  if (counter > 5) clearInterval(iv);
}
Bei diesem Beispiel wird die Funktion "test" genau 6 mal ausgeführt.

Wenn Du einen MC entfernst, auf dem Intervalle laufen, werden diese nicht entfernt - sie laufen im Hintergrund weiter, was zu Problemen führen kann, wenn Du den Clip dann ein zweites Mal instanzierst. Hier findest Du eine Klasse, mit der sich dieses Problem umgehen lässt: http://www.tutorials.de/forum/flash...-automatisch-mit-ihren-objekten-loeschen.html

onEnterFrame-Methoden kannst Du mit der delete-Anweisung entfernen:
Code:
var counter = 0;

this.onEnterFrame = function() {
  counter ++;
  trace(counter);
  if (counter > 5) delete this.onEnterFrame;
}

Gruß
.
 
Das war sehr aufschlussreich
Gut das ich die Frage gestellt habe, ich dachte eigentlich die Intervalle würden mit den MovieClips gelöscht werden - aber diese Vermutung hat sich leider nicht bestätigt, da man merkt, dass an einer Stelle ein Intervall doppelt ausgeführt wird, beim Zweiten Aufruf des MovieClips (ein countdown wird fast doppelt so schnell und mit einem anderen Startwert dekrementiert)...


Also tausend Dank mal wieder,


besten Gruß,



Mike
 
Zurück