Это код для ключевого слушателя, который управляет движением ImageIcon. Я хочу, чтобы нажатие других клавиш не мешало движению изображения, но я все еще хочу, чтобы другие клавиши действовали, но не останавливали движение изображения. Я не знаю, является ли это проблемой с фокусом, но я пытался использовать grabFocus (), когда нажимается пробел, но безрезультатно. Я также пробовал привязки клавиш, которые, как оказалось, имеют глючную анимацию и имеют ту же проблему.
Например, допустим, я держу нажатой клавишу со стрелкой вправо, поэтому мой спрайт движется вправо, а затем я нажимаю клавишу пробела, удерживая нажатой правую клавишу. С моим кодом этот щелчок останавливает движение моего спрайта. Я хочу, чтобы у пробела была цель, но я хочу, чтобы она не остановила спрайт.
public void actionPerformed(ActionEvent e){ // image and graphics stuff is elsewhere in the code
x += velx; // x and y are declared above
y += vely;
repaint();
}
public void up()
{
vely = -1;
velx = 0;
}
public void down()
{
vely = 1;
velx = 0;
}
public void left()
{
vely = 0;
velx = -1;
}
public void right()
{
vely = 0;
velx = 1;
}
public void keyPressed(KeyEvent e)
{
int key = e.getKeyCode();
if(key==KeyEvent.VK_UP)
{
up();
i = 0;
}
if(key==KeyEvent.VK_DOWN)
{
down();
i = 1;
}
if(key==KeyEvent.VK_LEFT)
{
left();
i = 2;
}
if(key==KeyEvent.VK_RIGHT)
{
right();
i = 3;
}
if(key == KeyEvent.VK_SPACE)
{
j = 0;
spaceClicked = true;
}
}
public void keyReleased(KeyEvent e)
{
int key = e.getKeyCode();
if(key == KeyEvent.VK_UP || key == KeyEvent.VK_DOWN)
vely = 0;
else
velx = 0;
}
public void keyTyped(KeyEvent e)
{
}
Любая помощь будет оценена, спасибо.