作者QQ29 (我爱阿蓉)
看板C_Sharp
标题[问题] XNA 关於键盘按键侦测的疑惑
时间Mon Apr 26 12:54:12 2010
XNA 关於键盘按键侦测
目前有些观念想厘清一下~~
KeyboardState CurrentKeyBoardInput = Keyboard.GetState();
Keys[] keys = CurrentKeyBoardInput.GetPressedKeys();
如果只是单纯GetPressedKeys 假如按下"A" 会有好几个A在GetPressedKeys那个queue里
面
我找一些sample code有一种作法是
用timespan去计算间隔 希望不要在timespan设定的时间内再次去 Keyboard.GetState();
这样效果可以按着A不放 会有AAAAAAAAAAAAAAAA印出来
但在使用上感觉不是很顺~
另一个作法是
我自己看XNA document的范例改成
Update里
Keys[] keys = CurrentKeyBoardInput.GetPressedKeys();
if (OldKeyBoardInput != CurrentKeyBoardInput)
{
..............................................
}
OldKeyBoardInput = CurrentKeyBoardInput;
这样竟然keys 就只会得到一个input
我不懂那个if到底怎麽判断的.....
他会发生!= 的情形是因为 平常没按 当有 KeyDown就发生!= 然後连续的press
都算是同一个state所以都是 ==
所以他只会抓第一个A?
=========================
第一种做法 我是觉得有时候会 漏掉key 有时不灵敏可能是因为我定死 interval
所以请教 第二种作法的话
可否改成模拟 A按着不放的情况呢?
另外我发现
key得到的都是大写字母.....我该怎麽判断使用者是输入大写还是小写呢??
还有输入数字都会出现D1 D2 D3....多了个D 有函式有办法把它拿掉吗?
以上
谢谢各位
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.147.15.66
※ 编辑: QQ29 来自: 122.147.15.66 (04/26 13:10)
1F:→ help0430:你是要取得组合键吗?不然用IsKeyDown就好啦 04/30 10:32