PDA

Volledige versie bekijken : Stop(); stopt niet!


dakans
%Europe/Berlin %639 %2005, 16:20
Beste mensen,

Ik ben dus bezig met een presentatie. Om mezelf te dwingen AS te leren heb ik in dit project zoveel mogelijk AS proberen te verwerken, met het gevolg dat ik hier menig topic geopend heb. De presentatie is inmiddels grotendeels af, maar ik heb weer een probleem:

Op het laatse frame stopt de presentatie en middels een 40 tal buttons is het mogelijk externe swf'jes aan te roepen die een metermafose van personen laten zien (zie: http://www.flashfocus.nl/forum/showthread.php?t=4339). Dit loopt allemaal prima, het enige probleem is dat na een bepaalde tijd de presentatie weer opnieuw begint (bij frame 2) ondanks dat ik een stop(); op het laatste frame geplaatst. Dit is vrij lastig degene die na die bepaalde tijd nog foto's wil bekijken.

Ik heb de tijd getimed hoe lang het duurde voordat de presentatie weer opnieuw begon te spelen, dit was zo'n 5 minuten. Zo kwam ik erachter dat het waarschijnlijk met het AS-aftelmechanisme te maken heeft die ik op frame 1 heb staan, zie hieronder:

_root.tijd = 300000;
setInterval(Aftellen,1000);

function Aftellen(){
_root.tijd -= 1000;
_root.minuten = Math.floor((_root.tijd/(60*1000)));
_root.seconden = (_root.tijd/1000)-(_root.minuten*60);
if(_root.tijd == 0){
stop();
gotoAndPlay(2);
}
}
Dit is gekoppeld aan 2 dynamische tekstvakken waarvan de 1 var.name = minuten en de ander var.name = seconden.

Ik heb dit script een tijdje geleden van FlashFiles gehaald omdat ik toen nog niet wist dat FlashFocus nog bestond. Het enige wat ik wilde was een 'countdown' die van 5 minuten naar nul aftelde (niet naar een bepaalde datum ofzo, serveronafhankelijk, zo simpel mogelijk). Inmiddels ben ik erachter dat het gebruik van _root behoorlijk omstreden is, maar toch hij deed het en daar was ik met mijn weinige kennis van AS allang tevreden mee. Er staat een stop(); in dit script, maar die blijkt dus niet te werken. Moet ik het een een apparte MC zetten en die dan unloaden op frame 2? Of is er een simpelere oplossing?

Elke vorm van hulp is welkom!
Groeten, David.

Fatty Owl
%Europe/Berlin %643 %2005, 16:26
er staat stop(); en dan gotoAndPlay(2). Dit heeft dan niet veel zin ;)

dakans
%Europe/Berlin %656 %2005, 16:46
Ja klopt, maar als de teller bij 0 is moet ie ook naar frame 2, of bedoel je dat ik het ff om moet draaien? Ik geef toe dat ik dit ook zelf niet heb geschreven, maar het probleem is dat de teller (zonder dat ie zichtbaar is) opnieuw begint te lopen, waardoor alles na 5 minuten weer opnieuw begint...

gvir
%Europe/Berlin %662 %2005, 16:54
probeer eens:
gotoAndStop(2);

ipv.
stop();
gotoAndPlay(2);

theFlashWizard
%Europe/Berlin %666 %2005, 17:00
waarscheinlijk start hij de functie gewoon opnieuw door de interval..
in tegenstelling tot javascript wordt een interval in flash wel herhaalt..

dus geef je interval een naam:
AftellenI = setInterval(Aftellen,1000);

en clear/stop hem wanneer nodig is met:
clearInterval(AftellenI)

is dit de oplossing?

behived
%Europe/Berlin %667 %2005, 17:01
_root.tijd = 300000;
intervalID=setInterval(Aftellen,1000);

function Aftellen(){
_root.tijd -= 1000;
_root.minuten = Math.floor((_root.tijd/(60*1000)));
_root.seconden = (_root.tijd/1000)-(_root.minuten*60);
if(_root.tijd == 0){
clearInterval(intervalID);
gotoAndStop(2);
}

clearInterval() zorgt ervoor dat je interval opgehoffen wordt
}

flashwizard was sneller ;)

dakans
%Europe/Berlin %697 %2005, 17:44
Hehehe.... 2 zielen 1 gedachte. :D

Dit klinkt allemaal erg logisch en toen ik het las was ik er van overtuigt dat dit de oplossing was, maar een test bewees het tegendeel! :@

P.S. Ik heb de toegoegingen van Behived gebruikt...

behived
%Europe/Berlin %721 %2005, 18:18
_root.tijd = 3000;
intervalID=setInterval(Aftellen,1000);

function Aftellen(){
_root.tijd -= 1000;
_root.minuten = Math.floor((_root.tijd/(60*1000)));
_root.seconden = (_root.tijd/1000)-(_root.minuten*60);
if(_root.tijd == 0){
clearInterval(intervalID);
gotoAndStop(2);
}}
stop();

Bij mij werkt dit perfect (heb wel de _root.tijd even ingekort om te testen)
heb een } en een stop(); toegevoegd

theFlashWizard
%Europe/Berlin %845 %2005, 21:17
ey geen boze gezichtjes he..
stel ons is in staat je te verbetere door je huidige script te laten zien.. :)

dakans
%Europe/Berlin %857 %2005, 21:34
Boze gezichtje was zeker niet jegens jullie bedoeld, meer een vorm van frustratie!!! Maar inmiddels is deze veranderd in :D .

Je hebt gelijk Behived!!! De clearInterval werkt nu prima... Heb alleen de gotoAndStop(2); even veranderd in gotoAndPlay(2); omdat de presentatie wel moest gaan lopen wanneer de teller bij nul eindigde.

Ik heb de gewoonte om de hulpverlener dan tot "Held van de dag" uit te roepen, dus bij deze...

Groeten,
David.