I have a function which is supposed to play a sound at an interval that gets shorter every time the function is called. It works by calling itself through timer.performWithDelay() using a value that decreases automatically.
local timerDelay = 250
local timerDecrease = 10
local time = system.getTimer()
local function pewLooper()
if timerDelay \> 0 then
timerDelay = timerDelay - decrease;
local now = system.getTimer()
local elapsed = now - time
playPew()
time = now
print('elapsed = ' .. elapsed)
print('timerDelay = ' .. timerDelay)
timer.performWithDelay( timerDelay, pewLooper )
end
end
pewLooper()
When I run the function, timerDelay decreases as intended but the elapsed delay only decreases every three or four times the function is called.
Here’s the debug text:
timerDelay = 240
elapsed = 263
timerDelay = 230
elapsed = 231
timerDelay = 220
elapsed = 231
timerDelay = 210
elapsed = 231
timerDelay = 200
elapsed = 231
timerDelay = 190
elapsed = 198
timerDelay = 180
elapsed = 198
timerDelay = 170
elapsed = 198
timerDelay = 160
elapsed = 165
timerDelay = 150
elapsed = 165
timerDelay = 140
elapsed = 165
timerDelay = 130
elapsed = 132
timerDelay = 120
elapsed = 132
timerDelay = 110
elapsed = 132
timerDelay = 100
elapsed = 132
timerDelay = 90
elapsed = 99
timerDelay = 80
elapsed = 99
timerDelay = 70
elapsed = 99
timerDelay = 60
elapsed = 66
timerDelay = 50
elapsed = 66
timerDelay = 40
elapsed = 66
timerDelay = 30
elapsed = 33
timerDelay = 20
elapsed = 33
timerDelay = 10
elapsed = 33
timerDelay = 0
What’s happening is that the elapsed delay doesn’t change until (elapsed - timerDelay) > 33. This is true regardless of what timerDelay and timerDecrease are set to.
I know that the elapsed numbers are correct because I can actually hear the interval between pew making big jumps instead of increasing smoothly.
This is really starting to drive me nuts, so thanks in advance for any suggestions… [import]uid: 10489 topic_id: 6532 reply_id: 306532[/import]