Simple timing problem

BlitzMax Forums/BlitzMax Beginners Area/Simple timing problem

ParadoX(Posted 2007) [#1]
I have a problem that I assume is very simple to solve and I might have just missed this tutorial, sorry in advance for the newbie question.

I have a function that I want to execute a delay in, but I don't want to freeze the entire application in the process.

example:
function blah()
do stuff
delay 5000
do stuff 5000 later
endfunction

Of course, the delay command freezes execution on the entire application. I want to create delays in the function execuation that keep the rest of the app moving along.

I've looked into timers, delay, and whatnot, but I don't think I'm doing it right.

Any help would be great!

Thanks!


kochOn(Posted 2007) [#2]
I' ve done an little library that deals with timers but it's for BlitzPlus/3D. You can still look at the code... alarm.bb


TomToad(Posted 2007) [#3]
Local Hold:int = Millisecs() + AmountToDelay 
While Not KeyHit(KEY_ESCAPE)
  'This part will be delayed until Millisecs() has reached the hold time
  If Millisecs() >= Hold
    DoStuff()
  End If

  'This part will always be executed
  DoOtherStuff()
Wend



Grey Alien(Posted 2007) [#4]
Or you can use a counter like below

Local Hold:int = 1000 'in frames
While Not KeyHit(KEY_ESCAPE)
  'This part will be delayed until Hold is zero
  If Hold = 0 then
      DoStuff()
  Else
    Hold:-1 'reduce the frame counter
  End If

  'This part will always be executed
  DoOtherStuff()
Wend