在5秒内按任意键

时间:2014-05-21 21:35:39

标签: events time lua wait computercraft

澄清一下,我正在使用ComputerCraft(模拟器:http://gravlann.github.io/,语言:Lua)

我知道要等待按键

os.pullEvent("key")

并等待5秒我需要使用此

sleep(5)

但是我想等一下按键并在5秒后禁用事件服务员。

1 个答案:

答案 0 :(得分:2)

我不熟悉 ComputerCraft API ,但我想,您可以使用parallel API。基本上,它允许并行执行两个或多个函数。

具体 - parallel.waitForAny。在任何函数完成后返回,因此,只执行正在执行的函数。相反,parallel.waitForAll 等待执行的所有函数。

我会用这样的东西:

local action_done = 0

local function wait_for_keypress()
    local event, key_code = os.pullEvent("key")

    --do something according to separate key codes? :}
end

local function wait_some_time()
    sleep(5)
end

action_done = parallel.waitForAny(wait_for_keypress, wait_some_time)
--action done now contains the number of function which was finished first.

编辑:如果仅使用 ComputerCraft API ,则应更改为此(使用timer event):

local function wait_some_time()
    os.startTimer(5)
end