XNA 数字锁定会影响输入

本文关键字:影响 输入 锁定 数字 XNA | 更新日期: 2023-09-27 17:56:48

我有一个中断,在键盘按键上给了我协调键。当数字锁定为 ON 时,按键显示为 Numpad1、Numpad2 等。当数字锁定关闭时,数字键盘键将变为结束、左、右、向上、页面锁定...我不能发生这种情况,因为我需要将这些键(左,右.)保留为实际的箭头键。id宁愿让输入完全不受数字锁的影响。但是,我似乎无法缓解这种情况,因为我直接从 XNA 获得输入。其他人可以确认这发生在VS 2008上的XNA 3.1中吗?

XNA 数字锁定会影响输入

XNA内部使用win32函数GetKeyboardState来确定键盘状态。此函数无法区分数字键盘、箭头键和插入组。

显然,您可以使用WM_KEYDOWN消息(及其朋友)来区分密钥。

作为练习,我将保留在 XNA 应用程序中获取 win32 消息所需的互操作,以及如何检查消息的数据。

(我个人建议简单地修改您的控制方案。或者只是观察用户的锁定状态。一般来说,接管诸如数字锁定键之类的功能是一个坏主意

您可以为游戏中的每个操作定义 2 个键。

例如,不要用 Keys.Left 向左移动,而是为其分配另一个键 (Numpad4)。

在您的输入检查代码中,您只需检查是否按下了以下 2 个键中的任何一个:

例如:

if (IsKeyPressed(Keys.Numpad4) || IsKeyPressed(Keys.Left)
{
    // Do some action.
}

当然,您还可以创建一个接受 2 个密钥并在内部执行的方法,而无需每次都编写代码。

我还没有验证这一点,但是Morpheus Development的Ryan Rubley在这里发布了一个值得一试的解决方案:

http://xboxforums.create.msdn.com/forums/p/90944/545124.aspx#545124

这是一个完全有效的解决方案,无论 数字锁的状态,并且不打开数字锁

创建者 Ryan Rubley 9-5-2011