【发布时间】:2014-07-16 05:04:27
【问题描述】:
标题可能有点误导,不知道如何简短地说出我的问题。
基本上我正在做的是我使用键盘监听器来找出哪些键被按下并根据我移动我的游戏角色。
问题是,当您点击窗口外时,按住一个键,我的侦听器没有注册 keyReleased 事件。
我尝试通过使用鼠标侦听器和 mouseExited 事件来修复它,但这并不能一直修复它,有时它会有时它不会。
这是我的实现:
键盘:
public void mouseLeftWindow()
{
for(int i =0;i<KEY_COUNT;i++)
{
keys[i] = false;
}
}
@Override
public void keyPressed(KeyEvent e)
{
int keyCode = e.getKeyCode();
if(keyCode>=0 && keyCode<KEY_COUNT)
{
keys[keyCode] = true;
}
}
@Override
public void keyReleased(KeyEvent e)
{
int keyCode = e.getKeyCode();
if(keyCode>=0 && keyCode<KEY_COUNT)
{
keys[keyCode] = false;
}
}
其中 keys[] 是一个 boolean[] 描述,哪些代码被按下
鼠标:
@Override
public void mouseExited(MouseEvent e)
{
mouseMoved(e);
keyboard.mouseLeftWindow();
}
【问题讨论】:
标签: java events keyboard mouse