5秒内按下任意键。

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

我知道要等待按键操作需要使用以下代码

os.pullEvent("key")

而要等待5秒钟,我需要使用以下代码

sleep(5)

但我想等待按键操作并在5秒后禁用事件等待器。

点赞
用户1150918
用户1150918

我不熟悉 _ComputerCraft API_,但我猜想,您可以使用parallel API来实现。它基本上允许同时执行两个或多个函数。

具体来说是 parallel.waitForAny。它在任何一个函数执行完后返回,因此只执行其中一个函数。相反,parallel.waitForAll等待所有函数执行完毕。

我会使用像这样的代码:

local action_done = 0

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

    --根据不同的按键编码进行一些操作? :}
end

local function wait_some_time()
    sleep(5)
end

action_done = parallel.waitForAny(wait_for_keypress, wait_some_time)
--action_done现在包含最先完成的函数的编号。

编辑: 如果只使用 _ComputerCraft API_,则应更改为使用timer event

local function wait_some_time()
    os.startTimer(5)
end
2014-05-22 12:35:03