等待一定时间后再进行下一步操作。

我正在使用LÖVE框架编写Lua代码。有没有什么方法可以暂停给定函数的运行一段时间?

我知道love.draw()love.updates()都可以用来跟踪时间的持续性。我应该基于这个做些什么,还是有更简单的方法?可能是内置函数?

点赞
用户734069
用户734069

Suspending either of those isn't really a good idea. Especially love.draw, since that's needed to keep the window up-to-date.

然而,如果您有一些处理不想在特定时期进行,那么这很容易实现。在这段时间的开始,获取当前时间。然后,每一帧检查请求的经过时间是否已经到达。一旦达到,再返回进行那部分处理。

local function begin_elapsed_wait(time_to_wait)
    local end_time = love2d.timer.getTime() + time_to_wait
    return function()
        if(end_time < love2d.timer.getTime()) then
            return true
        else
            return false
        end
    end
end

local am_waiting = function() return false end

function love.update(dt)
    if(am_waiting()) then
        return
    end

    -- Do stuff.

    if(--[[whatever]]) then
        am_waiting = begin_elapsed_wait(2.5) -- 2.5 秒不进行更新
    end
end
2016-01-02 22:54:26