If I pause an animation loop, the frame
value doesn't get updated, even if I pause the loop after setting frame
.
Expectation:
I expect this to pause on frame 5 of the loop:
loop.frame = 5
loop.paused = true
loop:draw(0,0)
Actual result:
The loop pauses on whatever the value of frame
was at the beginning of the update loop.
Info
I looked at animation.lua
. It seems setting frame
only updates the animation time offset. The currentFrame
internal value that actually fetches the image frame gets set based on that time offset in updateLoopAnimation
. But updateLoopAnimation
gets skipped if the loop is paused. So currentFrame
will never get updated even if pausing after setting frame
.
Workaround
Since updateLoopAnimation
gets called from the frame
accessor, I can force currentFrame
to get set by accessing frame
before pausing. This works as expected (the loop pauses on frame 5):
loop.frame = 5
local f = loop.frame -- force animation.loop to set currentFrame
loop.paused = true
loop:draw(0,0)