그래서 내 캐릭터가 더 부드럽게 움직 이도록 도와주세요. 문제는 내가 키를 누를 때 문자가 한 픽셀 씩 움직이며 그 후 1 초 후에 그는 "부드럽게"실행된다는 것입니다. 1 초를 기다릴 필요없이 처음부터 순조롭게 돌아갈 수 있도록 어떻게 수정할 수 있습니까? 도움을 주셔서 감사 드리며 직접 감사드립니다.부드럽게 움직이게하려면 어떻게해야합니까?
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)'는'(KB [0] == true)'이어야합니까? 또는 단지'if (KB [0])' – samgak
그리고 왜 당신은'keyPressed'에서 다른 로직을 가지고 있습니까? 추 신 :'paintComponent'에서 repaint()을 호출하는 것이 가장 좋은 아이디어는 아닙니다. – AxelH
애니메이션을 제어하려면'스윙 타이머 (Swing Timer) '를 사용해야합니다. [키보드를 사용한 동작] (https://tips4java.wordpress.com/2013/06/09/motion-using-the-keyboard/)을 참조하십시오. 'KeyboardAnimation.java' 예제는 제어 할 수있는 부드러운 애니메이션을위한'Swing Timer' 사용법을 보여줍니다. – camickr