events - 5秒内按任意键

标签 events time lua wait computercraft

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

我知道要等待按键

os.pullEvent("key")

等待 5 秒我需要使用这个

sleep(5)

但我想等待按键并在 5 秒后禁用事件等待程序。

最佳答案

我不熟悉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

关于events - 5秒内按任意键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23794234/

相关文章:

ios - 设置事件 "repeats every month"的重复发生而不是 "repeats every month, each 31st"ios

c++ - 直接调用事件处理器

c# - 为什么 Process.Exited 事件会触发两次?

ios - 根据一天中的时间采取行动?

parsing - 无法将字符串解析为具有时区偏移量的时间,其中包含RFC3339带有看似矛盾的错误

lua - 如何读取包含lua表的配置文件

Emacs lua-mode(文件模式规范错误)

regex - Lua文本解析、空格处理

c# - 在 RhinoMocks 中动态订阅事件

c++ - 使用多个变量和 while 循环跟踪播放时间