TIMER milliseconds, [branchLabel]
Timer milliseconds subName
Omschrijving:
Dit commando beheert een Windows timer. Dit is erg bruikbaar bij het onder controle
houden van de snelheid van uitvoering van software (games en animaties bijvoorbeeld),
of om een programma eigenschap te creëren waarbij periodiek iets wordt geactiveerd
(een klok misschien, of een e-mail cliënt die nieuwe berichten controleert).
De TIMER wordt gedeactiveerd door het plaatsen van een tijdwaarde van 0,
zonder een aftaketiket. Er is slechts één timer. De uit te voeren tijdwaarde
en/of aftak etiket om uit te voeren kan op elk ogenblik worden veranderd door
een nieuw TIMER commando te geven. Er zijn 1000 milliseconden in één seconde.
Een waarde van 1000 zorgt ervoor dat de timer om de één seconde afgaat.
Een waarde van 500 laat de timer elke halve seconde afgaan, etc.
Gebruik:
Branch Label Handler:
'set a timer to fire in 3 seconds
'using branch label event handler
timer 3000, [itHappened]
'wait here
wait
[itHappened]
'deactivate the timer
timer 0
confirm "It happened! Do it again?"; answer
if answer then
'reactivate the timer
timer 3000, [itHappened]
wait
end if
end
Subroutine handler:
'set a timer to fire in 3 seconds
'using subroutine event handler
timer 3000, itHappened
'wait here
wait
sub itHappened
'deactivate the timer
timer 0
confirm "It happened! Do it again?"; answer
if answer then
'reactivate the timer
timer 3000, itHappened
end if
end sub
Wees voorzichtig!
Als het programma probeert om meer code binnen een timer routine uit
te voeren dan in het timer interval kan worden uitgevoerd, dan zullen
de opeenhoping van timer tikken en het programma uitvoering blijven doorgaan
in het snelst mogelijke tempo. Dit zou het programma kunnen laten vast lopen.
Om vastlopen te vermijden, plaatst men een SCAN commando binnen de timer routine,
zodat het programma weet wanneer de gebruiker andere controles activeert,
of weet of u een venster afsluit.
PAUSES AND TIMERS
CONTROLLING THE ANIMATION
Als de frames met animatie zonder pauzes worden getekend, kan de actie te snel
zijn om te zien of te controleren op snellere computers. Een programma kan de snelheid
controleren door animatie frames in een vastgesteld tijdinterval te tekenen met
een TIMER, of het tekenen met een eenvoudige PAUZE SUBROUTINE te controleren.
A REAL TIMER!
De nieuwe TIMER van Liberty BASIC is perfect voor gebruik met animatie.
Het zorgt ervoor dat naar het aftaketiket dat wordt gespecificeerd
op het gegeven tijdinterval wordt gesprongen (in milliseconden).
Er zijn 1.000 milliseconden in één seconde.
Een halve seconde interval zou betekenen dat de millisecondenparameter 500 moet zijn.
Een kwart seconde interval zou een millisecondenparameter van 250 vereisen
en voor één tiende van een seconde zou u een millisecondenparameter
van 100 moeten gebruiken.
Het volgende voorbeeld zorgt ervoor dat een frame getekend wordt
elk één tiende van een seconde:
TIMER 100, [DrawFrame]
Gebruik het volgende om de TIMER, uit te zetten:
TIMER 0
De TIMER kan in de listing worden geactiveerd of worden gereactiveerd
wanneer u wilt door gewoon het commando TIMER te herhalen.
Het tijdinterval kan worden veranderd, zoals dat ook kan met het aftaketiket
dat aangeeft waar de uitvoering vervolgen moet als de TIMER afgaat.
Hier is een voorbeeld dat in het zelfde programma kon voorkomen zoals het
voorbeeld van de TIMER hierboven:
TIMER 250, [DrawExplosion]
AN IMPORTANT NOTE ABOUT THE TIMER!
De cpuklok "tikt" 18 keer per seconde. Dit betekent dat het ruwweg
om de 56 milliseconden "tikt". Als het tijdinterval op 56 milliseconden
of minder wordt geplaatst, zal de resulterende animatie op een
hoogste snelheid van 18 frames per seconde lopen.
Als een programma om de één of andere reden stopt, accumuleren de timer
tikken zich en de geaccumuleerde tikken komen vrij wanneer het programma
zijn actie hervat. Dit zou kunnen gebeuren wanneer het programma de gebruiker
een notice bericht, bijvoorbeeld geeft.
Als de actie om welke reden dan ook moet ophouden, is het noodzakelijk
om een TIMER 0 commando uit te geven om zodoende de timer te stoppen.
Wanneer de actie moet hervatten, dan wordt de timer opnieuw gestart met
een TIMER ms, [BranchLabel] commando.
A SIMPLE PAUSE SUBROUTINE
Op een snelle computer, kunnen de frames voor animatie te snel lopen dan nodig is.
Het is gemakkelijk om een eenvoudige pauze tussen de animatie frames te coderen.
De volgende kleine subroutine genaamd "Pause" vereist een parameter voor het
aantal milliseconden om tussen frames te pauzeren.
Er zijn 1.000 milliseconden in één seconde.
Een halve seconde interval zou betekenen dat de millisecondenparameter 500 moet zijn.
Een kwart seconde interval zou een millisecondenparameter van 250 vereisen en
voor één tiende van een seconde zou u een millisecondenparameter van 100 moeten gebruiken.
sub Pause mil
t=time$("milliseconds")
while time$("milliseconds")TIMER VS PAUSE
De TIMER zorgt ervoor dat een aftaketiket wordt uitgevoerd met een vastgesteld interval,
dat in milliseconden wordt gemeten. Het zetten van dit interval op 250 (bijvoorbeeld)
zal betekenen dat het aftaketiket worden uitgevoerd elke kwart seconde.
Een PAUZE is precies wat het zegt. Het zorgt ervoor dat de actie het vastgestelde
interval pauzeert.
Pauzeren voor een kwart seconde TUSSEN animatie frames zal niet het zelfde zijn
als het tekenen van een animatie frame elke kwart seconde,
omdat naast de kwart seconde pauze, er tijd wordt gevergd om de code bij
het aftaketiket uit te voeren. Het gebruiken van de TIMER resulteert in veel meer
vlotte en nauwkeurigere timing voor animatie.
See how to Add a Mask to sprites.