在Lua中如何处理KeyPress事件?

能否在 Lua 中获取用户的按键响应?

例如:

while true do
    if keyPress(27)==true then
        print("You just pressed ESC")
    end
end

原文链接 https://stackoverflow.com/questions/5689566

点赞
stackoverflow用户107090
stackoverflow用户107090

Not in stock Lua. Probably with an additional library.

这个 Lua 库不在库存中,可能需要额外的库。

2011-04-16 23:32:50
stackoverflow用户282658
stackoverflow用户282658

Lua 基于极高的可移植性。因此,它只基于 ANSI C 中提供的功能及能力。(我认为唯一的例外是动态链接,这是一个非 ANSI 特性,在所有平台上都不可用,但它非常有用,所以他们将其放入了许多平台中。)

ANSI C 不提供按键功能,因此默认的 Lua 库也不提供。

话虽如此,LuaRocks 库可能会引导您找到具备此功能的库。例如,您可以在该页面中找到 ltermbox,它可能具备您所需的功能。(您可能需要删除您不需要的部分。)可能还有其他可用的库。去深挖一下吧。

如果找不到库,那么 Lua 的整个 “point” 就在于可扩展性。它是一种可扩展的扩展语言。 手动编写您自己的扩展 提供您想要的功能其实也不是很难。

2011-04-17 01:23:55
stackoverflow用户151501
stackoverflow用户151501

NTLua项目中有一个绑定用于获取按键信息的getkey()。你可以从那里获取一些源代码。(它只是getch()的包装)。

2011-04-17 01:56:13
stackoverflow用户554075
stackoverflow用户554075

看起来你在尝试制作一个游戏。 对于2D游戏,你可能想考虑love2d。 它看起来有点奇怪,但它可以工作,相对于其他语言(如C)相对容易。

2011-12-29 02:51:01
stackoverflow用户10842808
stackoverflow用户10842808

首先,如果您使用的是我的方法,请将您使用的脚本放在本地脚本(LocalScript)中。不这样做会导致键无法显示在控制台中(按 F9 查看控制台)。

好的,既然我们知道它在本地脚本中,这是脚本:

local player = game.Players.LocalPlayer -- 获取本地玩家
local mouse = player:GetMouse() -- 获取玩家的鼠标

mouse.KeyDown:connect(function(key) -- 获取鼠标,然后获取键盘
    if key:lower() == "e" or key:upper() == "E" then -- 检查选择的键(key:lower 小写字母键,key:upper 大写字母键)
        print('您按下了 e 键') -- 打印按下的键
    end -- 结束 if 语句
end) -- 结束函数

如果您只想标记一个键(仅小写或仅大写),请参见以下说明:

仅小写:

local player = game.Players.LocalPlayer
local mouse = player:GetMouse()

mouse.KeyDown:connect(function(key)
    if key == "e" then
        print('您按下了 e 键')
    end
end)

仅大写:

local player = game.Players.LocalPlayer
local mouse = player:GetMouse()

mouse.KeyDown:connect(function(key)
    if key == "E" then
        print('您按下了 E 键')
    end
end)

或者,如果您只想一般地标记任何键,也可以这样做:

local player = game.Players.LocalPlayer
local mouse = player:GetMouse()

mouse.KeyDown:connect(function(key)
    print('您按下了 '..key..' 键')
end)

我希望我已经帮助您回答了您的问题。

2018-12-28 11:35:04
stackoverflow用户21102818
stackoverflow用户21102818
如果按键(keypress)等于(29)的话,则
打印出 "hello"
结尾
2023-01-29 05:38:57