主题:游戏中的键盘控制对象是如何实现的?求救!
pujunyi
[专家分:0] 发布于 2008-02-07 21:12:00
例如:
飞机游戏中,当按下方向键,飞机就立刻相那个方向移动了,但在MFC编程时,如果用onkewdown,则会有键盘延迟的问题,即按下键盘后,需要延迟一小段时间,即使用SystemParametersInfo把键盘的延迟修改都最小,但延迟还是很明显的,请问飞机游戏是如何解决这个问题的?
回复列表 (共5个回复)
沙发
wwjxjj [专家分:760] 发布于 2008-02-10 15:01:00
用GetAsyncKeyState函数!
板凳
iAkiak [专家分:8460] 发布于 2008-02-10 22:31:00
onkeydown时设置标志位,onkeyup时清除这个标志位。
然后在主循环中判断这个标志位的状态。
3 楼
pujunyi [专家分:0] 发布于 2008-02-11 20:17:00
这个方法我也试过,一般情况无问题,但是方向转换时,例如从"按左键"转为"按右键"时,有时候依然有延迟,有时就不会
4 楼
华山论剑 [专家分:5310] 发布于 2008-02-12 16:22:00
可以试试用Accelerator(加速键),且不用关联到菜单,因为keydown是在有输入焦点的窗口才能引发,而Accelerator是在主窗口捕获消息的,只要在游戏程序内,无论何时按下某个键就会执行。
5 楼
Jig [专家分:1180] 发布于 2008-02-14 13:58:00
你基于MFC架构当然MFC就一定已经提供了解决的方法。只是标准的游戏开发是会自己写个键盘模块,来接管系统级的键盘管理
所以,建议直接用成熟的游戏引擎来做。或自己去试着写个游戏开发包,这样精进效果才明显!
我来回复