Поэтому мне нужна помощь, чтобы мой персонаж двигался более плавно. Проблема в том, что персонаж перемещается на один пиксель, когда я нажимаю клавишу, и примерно через секунду он бежит после этого «плавно». Как я могу исправить это, чтобы мне не нужно было ждать эту секунду, и он просто работал гладко с самого начала? Я ценю любую помощь и заранее спасибо!
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.setColor(Color.GREEN);
g.fillRect(x, y, 30, 30);
update();
}
private boolean[] KB = new boolean[4];
public void update(){
if(KB[0] = true)
{
y -= 10;
}
if(KB[1] = true)
{
x -= 10;
}
if(KB[2] = true)
{
y += 10;
}
if(KB[3] = true)
{
x +=10;
}
repaint();
}
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_W)
{
KB[0] = true;
}
if(e.getKeyCode() == KeyEvent.VK_A)
{
x -= 10;
}
if(e.getKeyCode() == KeyEvent.VK_S)
{
y += 10;
}
if(e.getKeyCode() == KeyEvent.VK_D)
{
x += 10;
}
}
public void keyReleased(KeyEvent e) {
}
public void keyTyped(KeyEvent e) {
if(KB[0] = true)
должно бытьif(KB[0] == true)
? или простоif(KB[0])
- person samgak   schedule 08.05.2017keyPressed
? PS: вызов repaint() вpaintComponent
, вероятно, тоже не лучшая идея. - person AxelH   schedule 08.05.2017Swing Timer
для управления анимацией. См. раздел Движение с помощью клавиатуры. ПримерKeyboardAnimation.java
показывает, как использоватьSwing Timer
для плавной анимации, которой вы можете управлять. - person camickr   schedule 08.05.2017