for (Keys k = Keys.A; k <= Keys.Z; k++)
{
if (KeyPress(k))
Text += k;
}
Run Code Online (Sandbox Code Playgroud)
此代码检测到我在键盘上按下的按键按钮,它将打印出在控制台中按下的按键.但是,我在键盘上按了'a',但它出现'A'.我该如何解决?
这是一个经常遇到的问题.问题是XNA不适合从键盘获取文本输入.它适用于获取键盘上每个键的当前状态.
虽然您可以编写自定义代码来检查是否按下shift等等,但是键盘不是您正在使用的键盘(例如,不同的语言,不同的布局).大多数人所做的就是让窗户为你做.
如果您希望文本按预期显示,则需要基本上重新创建一些内容并让窗口为您执行此操作.
请参阅Promit的帖子:http://www.gamedev.net/topic/457783-xna-getting-text-from-keyboard/
用法:
将他的代码添加到您的解决方案 调用EventInput.Initialize in your game'sInitialize`方法并订阅他的事件:
EventInput.CharEntered += HandleCharEntered;
public void HandleCharEntered(object sender, CharacterEventArgs e)
{
var charEntered = e.Character;
// Do something with charEntered
}
Run Code Online (Sandbox Code Playgroud)
注意:如果您允许输入任何字符(例如带有变音符号的外国字符等),请确保您SpriteFont支持它们!(如果没有,也许只是在将字体添加到文本字符串之前检查您的字体是否支持它,或者让spritefont使用特殊的"无效"字符).
| 归档时间: |
|
| 查看次数: |
3256 次 |
| 最近记录: |