2

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

我知道等待按键

os.pullEvent("key")

并等待 5 秒钟,我需要使用它

sleep(5)

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

4

1 回答 1

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
于 2014-05-22T12:35:03.497 回答