TIMER

TIMER milliseconds, [branchLabel]

Timer milliseconds subName

Description:

This commands manages a Windows timer. This is useful for controlling the rate of software execution (games or animation perhaps), or for creating a program or program feature which activates periodically (a clock perhaps, or an email client which checks for new messages). The TIMER is deactivated by setting a time value of 0, and no branch label. There is only one timer. The elapsed time value and/or branch label to execute can be changed at any time by issuing a new TIMER command. There are 1000 milliseconds in one second. A value of 1000 causes the timer to fire every one second. A value of 500 causes the timer to fire every half second, and so on.

Usage:

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

Be Careful!

If the program attempts to execute more code within a timer routine than can be executed in the timer interval, the timer ticks build up and the program will keep executing them as quickly as it can. This might make the program appear to have locked up. To avoid a lock-up, place a SCAN command within the timer routine, so that the program knows when the user activates other controls, or closes a window.