Ive been using CreateTimer(60) before repeat/forever and rendering everything during my Timer Tick $4001 event. I discovered I have problems with the MilliSecs() values I get while in this event. For instance saying X = MilliSecs() at some point in the tick event and then saying If MilliSec() >= X + 10000, it will fire without any wait at all. Im also starting to notice things getting jerky and unsmooth. Is delta time a good thing to implement in b+ with event driven input? Is there another good 2D timing method I can use with an otherwise event driven setup?
Blitz+ Timing issues
BlitzPlus Forums/BlitzPlus Programming/Blitz+ Timing issues Let me try to phrase this better...
This doesnt work:
I want to handle timing of character animation and such in my main game loop (tick event) so how can I get the above to fire?
This doesnt work:
GameTime = CreateTimer(60) AnotherTimer = MilliSecs() Repeat Select WaitEvent(1) Case $4001 If MilliSecs() >= AnotherTimer + 1000 then X = X End Select Forever
I want to handle timing of character animation and such in my main game loop (tick event) so how can I get the above to fire?
See here for why not to use Millisecs() in that way
http://www.blitzbasic.com/bbs/posts.php?topic=16680
So in theory MilliSecs()-AnotherTime>1000 might fix your problem.
In your situation a timeout variable that you initialize with 60 and decrement every event (trigger secondary event when it hits zero) would be best I think.
btw, you do know x and X are the same variable in blitz
http://www.blitzbasic.com/bbs/posts.php?topic=16680
So in theory MilliSecs()-AnotherTime>1000 might fix your problem.
In your situation a timeout variable that you initialize with 60 and decrement every event (trigger secondary event when it hits zero) would be best I think.
btw, you do know x and X are the same variable in blitz
That would only buy you another second though? I would base your timing on timer ticks because there is a function that will return ticks since creation.
Yes skid, it was just an example. Also I would reset my Timer to MilliSecs() of course. I tried the one liner and it worked the first time but never again. Ill read the thread but Ill end up using variable counters I think.
Thanks for your help.
Thanks for your help.