我正在尝试在Lua应用程序的控制台界面中读取用户输入。 但是,我不想像标题所暗示的那样暂停程序执行。在用户输入时,使用read()会干扰正在进行的事件和界面更新的正常处理。
我能想出的最佳解决方案是维护一个临时变量,我将任何用户输入应用于不是功能键。但是,我的事件处理程序返回扫描码,我知道无法将这些映射到ASCII代码,而不是为每个键维护一个表,这是我真正想要避免的。
有什么想法吗?
编辑 举一个我的意思的例子:
function read_input()
local input = read()
do_something_with(input)
end
while true do
e,param1,param2,param3 = os.pullEvent()
if (e=='key' and param1=='201') then
read_input()
elseif (e=='something_else') then
do_something_else()
end
end
正如您所看到的,用户可以在某个时刻登陆要求用户输入的功能。在进行此输入时,我不能使该程序的任何其他(基于事件的)功能受到阻碍。
答案 0 :(得分:0)
您需要从os.pullEvent()
连续读取密钥local input
while true do
e,param1,param2,param3 = os.pullEvent()
if (e=='key') then
-- do some fancy stuff for checking which key has pressed and append it to input
-- additionally if it's enter do something other fancy
else
-- blah blah
end
end
我不确定,但我认为按下哪个键的字符在pullEvent的一个参数中,我可能会误解为。
此外,如果你想每隔一秒左右做一些事情,启动一个同时激活pullEvent的计时器。