applet中重复接收键盘的输入会死机,怎么回事?

来源:百度知道 编辑:UC知道 时间:2024/06/08 14:30:24
我用Java Applet做游戏,需要通过按'W','A','S','D'(上下左右)键来控制物体的移动,比如只要按了'W'键,就使物体向前移动一厘米,但是我发现,如果不断地按键不松开,比如想使物体一直向前移动就按住'W'键不松,会导致的情况却是界面出现死机?这是怎么回事?有没有什么办法可以限制这种情况?
听说可以设置个反应时间,如果按着不松,过多少ms就停止此事件。这个可行吗?具体该怎么做,老师们能不能简单的给出点代码示例?十分感谢了!!

我没写过java程序,对手机游戏更是没接触过,我只说说自己对键盘的理解

主程序判断按键按下和弹起肯定是用扫描方式的,现在常用的处理就是用定时器定时,在定时中断里面判断按键的状态(定时10ms扫一次吧),定时中断里面除了去抖和设置相应的按下弹起标志位之外,不做其他处理。
主循环里面根据按键的标志位来判断程序的跳转和执行,当主循环碰到按键一直没有弹起来,就在子循环里面反复执行某段代码,知道按键弹起为止,这就是你要实现的目的。你说按下键不松开会导致死机,我想应该是你在处理按键的时候显示部分没有跟上,如果真是死机的话是程序跑飞了,你看看你跳转那部分的代码有没有问题