Time Lua中的帧无关时间?

Time Lua中的帧无关时间?,time,timer,lua,frame-rate,love2d,Time,Timer,Lua,Frame Rate,Love2d,我正在使用Love2D为我和我的朋友创建一个小游戏,但我遇到了一个问题: 我想计算经过的时间,独立于帧率。我试着这样做,但一个微小的错误加起来,最终一秒钟在百分之一秒的时间里过去了 local last_time = os.time() function timeofday_update() world_time = world_time + os.time() - last_time end 为什么不在程序开始时标记时间,或者在任何时候(starting_time=os.time(

我正在使用Love2D为我和我的朋友创建一个小游戏,但我遇到了一个问题: 我想计算经过的时间,独立于帧率。我试着这样做,但一个微小的错误加起来,最终一秒钟在百分之一秒的时间里过去了

local last_time = os.time()

function timeofday_update()
    world_time = world_time + os.time() - last_time
end

为什么不在程序开始时标记时间,或者在任何时候(starting_time=os.time())开始时标记时间,那么“当前经过的时间”就是os.time()-starting_time。无需累加…

为什么不在程序开始时标记时间,或在任何时候(开始时间=os.time())开始标记时间,然后“当前经过的时间”就是os.time()-开始时间。不需要积累

function make_stopwatch ()
    local start = 0
    local finish = 0
    local function sw (cmd)
        if cmd == "start" then
            start = os.time()
            return 0
        end
        if cmd == "lap" then
            return os.difftime(os.time(), start)
        end
        if cmd == "stop" then
            finish = os.time()
        end
        return os.difftime(finish, start)
    end
    return sw 
end
演示:

演示:


你能解释一下这段代码应该完成什么以及它是如何失败的吗?你能解释一下这段代码应该完成什么以及它是如何失败的吗?
> sw = make_stopwatch()
> =sw("start")
0
> =sw("lap")
16
> =sw "lap"
22
> =sw "lap"
28
> =sw "stop"
42
> = sw()
42
> = sw()
42
> = sw "start"
0
> = sw "lap"
8
>