作者QQ29 (我爱阿蓉)
看板GameDesign
标题[问题] XNA 关於键盘按键侦测的疑惑
时间Mon Apr 26 12:54:39 2010
※ [本文转录自 C_Sharp 看板]
作者: 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
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.147.15.66
※ 编辑: QQ29 来自: 122.147.15.66 (04/26 13:10)
1F:推 darkflier:key down跟key press两个是不一样的 04/27 00:04
2F:→ QQ29:但这样不能侦测连续按下耶@@ 04/27 01:01