Toon posts:

[flash]clearen intervals met zelfde naam

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik probeer het project van iemand anders te ontrafelen, waarin op veel verschillende plaatsen setInterval met dezelfde naam wordt aangeroepen. Het lijkt er op dat die intervals niet altijd netjes gecleared worden. ik even een testje gebouwd:
code:
1
2
3
4
5
6
7
8
f1 = function() {
    trace ("function1");
}
f2 = function() {
    trace("function2");
}
timer = setInterval(f1, 10);
timer = setInterval(f2, 10);

ik had verwacht dat het voor de 2e keer definieren van de setInterval de 1e automatisch zou clearen, maar dat gebeurt niet. bovenstaande code tracet dus zowel function1 als function2. wanneer ik clearInterval(timer) toevoeg, wordt de laatst gedefinieerde setInterval gecleared. het eerste interval is niet meer te clearen, ook niet door nog een keer clearInterval(timer) toe te voegen. Een oplossing zou zijn om telkens voor het definieren van een setInterval de interval te clearen, of weet iemand anders een methode om meerdere intervals met de zelfde naam te clearen? En kan iemand me uitleggen waarom de tweede definitie van setInterval de eerste niet cleart?

  • roytanck
  • Registratie: Oktober 1999
  • Laatst online: 03-02 12:56
Ehm... je timer variabele is een (numerieke) referentie naar de interval die je aanmaakt. Na de tweede is de eerste referentie dus kwijt, en kun je die interval zelfs niet meer stoppen in principe.

Timer is dus geen interval object, maar een referentie daarnaar.

Verwijderd

Topicstarter
aha. dat klinkt logisch. maar is er dan verder geen manier meer om die interval te benaderen?

  • roytanck
  • Registratie: Oktober 1999
  • Laatst online: 03-02 12:56
Nou, volgens mij is het gewoon een teller en is de eerste interval timer-1, maar dat weet je nooit 100% zeker, en MM kan het elk moment veranderen in een volgende playerversie....

Slimmer is dus om een array te gebruiken voor je timers of in het geval je er maar twee wilt een 'timer2'...

  • sanderb
  • Registratie: November 2000
  • Laatst online: 03:39
de referentie naar het interval is inderdaad een nummer.
je zou dus nog steeds dat nummer kunnen gebruiken om de interval te clearen...alleen dat nummer weet je niet. Het zijn wel oplopende nummers, dus in theorie zou je met een loopje even alle nummers tot de laatste kunnen doorlopen..Natuulijk geen mooie oplossing, maar het zou wel moeten werken.

Hou er trouwens rekening mee dat het niet clearen van intervals je applicatie behoorlijk kan vertragen! Als je binnen een movieClip een interval hebt staan en je verwijdert de mc, dan blijft het interval gewoon doorlopen.

Netter is dus om elk interval een eigen naam te geven, en ook elke interval te clearen als je hem niet meer gebruikt.
Of zoals hierboven gezegd elke interval toevoegen aan een array die je doorloopt om ze allemaal te clearen wanneer dat nodig is.

[ Voor 41% gewijzigd door sanderb op 25-10-2005 14:02 ]

" A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools. " - Douglas Noel Adams