0

我正在尝试在 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

如您所见,用户可以在某些时候进入需要用户输入的功能。在采用此输入时,我不能让程序的任何其他(基于事件的)功能受到此阻碍。

4

1 回答 1

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 的计时器。

于 2014-04-01T15:53:48.170 回答