1

我一直在尝试在我的游戏中实现聊天系统,到目前为止,我让它接受文本字符串,并且我正在尝试实现特殊字符,例如句点、逗号和撇号。

例如,这是您通常获取句点和逗号的方式:

            if (currentKeyboardState.IsKeyDown(Keys.OemPeriod);
            if (currentKeyboardState.IsKeyDown(Keys.OemComma);

但是,在这种情况下,我找不到任何与感叹号(!)有关的东西。我知道我可以检查是否同时按下 Shift 和 1 键,但在这种情况下,如果我尝试这样做

            if (currentKeyboardState.IsKeyDown(Keys.LeftShift) && (currentKeyboardState.IsKeyDown(Keys.D1))
               text += "!";
               break;

每次我按 Shift 或 1 键时,它都会添加感叹号。这意味着它会产生感叹号,即使预期的字符是 1

感谢您的任何意见!

4

1 回答 1

0

我在一些 Windows 窗体中摆弄了一下,看看是否可以重现这个问题。(我不能......)了解您正在使用 XNA,默认情况下它并没有提供一种在用户键入文本时输入文本的简单方法,也许您需要重新审视您尝试的方式完全捕获用户输入。围绕捕获每个键(包括逗号、句号等键)进行编程似乎有点多。

在此处查看与此相同的另一个问题。

本质上,您将想要获得一个插件或获得一个实用程序类来处理键盘输入。特别是在这个线程中,他们有一个TranslateChar()方法,可以切换几种情况,包括你心爱的感叹号:

case Keys.D1: return (shift) ? '!' : '1';

希望这些信息对您有所帮助!祝你好运!

于 2013-06-01T01:51:18.590 回答