It isn't entirely clear what you are asking. You write that you want a timer, but you don't say what you want to use it for. Neither do you say if you want this timer to actually display the time or if you just want something to happen after a particular amount of time.
Here's a simple way to display the time:
on showTime
put the long time into fld "Time"
send "showTime" to me in 100 milliseconds
end showTime
By refereshing the time every 100 milliseconds, the time on display is never more than 1/10th of a second off.
Here's an efficient way to display a timer that only shows hours and minutes. It sends a showTime message just in time and uses a minimum of processing power:
on mouseUp
if showTime is in the pendingMessages then
put the pendingMessages into myMsgs
filter myMsgs with "*showTime*"
repeat for each line myMsg in myMsgs
cancel item 1 of myMsg
end repeat
else
showTime
end if
end mouseUp
on showTime
set the itemDel to colon
put the system time into myTime
put myTime into fld 1
put item 2 of myTime into myMinutes
if myMinutes is 59 then
add 1 to item 1 of myTime
if item 1 of myTime >= 24 then
put 0 into item 1 of myTime
end if
put "00" into item 2 of myTime
else
add 1 to item 2 of myTime
end if
convert myTime to seconds
put myTime - the seconds into myTime
send "showTime" to me in myTime seconds
end showTime
You can start the timer by clicking on the button containing the mouseUp handler and you can stop it by clicking the same button again.
If this isn't what you need, please explain more.