本人想做一个小游戏,需要用键盘的方向键来控制我的游戏角色的移动。当然,也就是长按左键则往做不断移动,长按右键则向右。问题是,当我按下方向键时,我的人物会先移动一格,过了1秒钟以后,才会不断的继续移动!无法做到我希望的,一按下键,立刻就做连续运动。以下是部分代码:addKeyListener(new KeyListener() {
public void keyTyped(KeyEvent e) {
}
public void keyReleased(KeyEvent e) {
}
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_UP) {
panel.moveTheRect(0, -5);
setBackground(Color.black);
panel.repaint();
}
if (e.getKeyCode() == KeyEvent.VK_DOWN) {
panel.moveTheRect(0, 5);
setBackground(Color.black);
panel.repaint();
}
if (e.getKeyCode() == KeyEvent.VK_LEFT) {
panel.moveTheRect(-5, 0);
setBackground(Color.black);
panel.repaint();
}
if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
panel.moveTheRect(5, 0);
setBackground(Color.black);
panel.repaint();
}
}
});这就是监听键盘的代码,不知道能否做到按下立即连续移动,就像CS那样的效果,请各位指教!Java游戏Swing
public void keyTyped(KeyEvent e) {
}
public void keyReleased(KeyEvent e) {
}
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_UP) {
panel.moveTheRect(0, -5);
setBackground(Color.black);
panel.repaint();
}
if (e.getKeyCode() == KeyEvent.VK_DOWN) {
panel.moveTheRect(0, 5);
setBackground(Color.black);
panel.repaint();
}
if (e.getKeyCode() == KeyEvent.VK_LEFT) {
panel.moveTheRect(-5, 0);
setBackground(Color.black);
panel.repaint();
}
if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
panel.moveTheRect(5, 0);
setBackground(Color.black);
panel.repaint();
}
}
});这就是监听键盘的代码,不知道能否做到按下立即连续移动,就像CS那样的效果,请各位指教!Java游戏Swing
比如按下右键,将跑动方向设置为向右,后台线程每隔30毫秒根据设置的间隔重新绘制一次。按键弹起时,停止绘制线程。可以参考网上大量的贪吃蛇的代码。