2016-10-01 3 views
1

아이콘을 전환 할 때 어떤 이유가 발생합니다. 아이콘의 이미지가 깜박입니다. 나는 또한 객체를 생성하려고 할 때이 문제를 더 많이 겪고 있는데, x와 y를 객체의 매개 변수로 전달하여 객체를 이동하려고합니다. 어떤 도움이라도 좋을 것입니다.Java ImageIcon 애니메이션 깜박임

public class Main extends JFrame implements ActionListener, KeyListener{ 

static Main main; 
Render render; 
Timer timer; 

static int x,y,count; 

ImageIcon player1 = new ImageIcon("C:\\Users\\Kyle\\Documents\\NetBeansProjects\\Testing52\\src\\testing52\\Player1.png"); 
ImageIcon player2 = new ImageIcon("C:\\Users\\Kyle\\Documents\\NetBeansProjects\\Testing52\\src\\testing52\\Player2.png"); 

Main(){ 

    render = new Render(); 
    timer = new Timer(100,this); 

    setVisible(true); 
    setSize(500,500); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setResizable(false); 
    addKeyListener(this); 
    add(render); 

    timer.start(); 

} 

public void render(Graphics g){ 

    count += 1; 

    if(count < 20){ 
     player1.paintIcon(this, g, x, y); 
    } 

    if(count > 20){ 
     player2.paintIcon(this, g, x, y); 
    } 
    if(count > 40){ 
     count = 0; 
    } 

} 


public static void main(String [] args){ 

    main = new Main(); 
} 

@Override 
public void actionPerformed(ActionEvent e) { 

    System.out.println(count); 
    render.repaint(); 
} 

@Override 
public void keyTyped(KeyEvent e) { 
} 

@Override 
public void keyPressed(KeyEvent e) { 
    int id = e.getKeyCode(); 

    int speed = 4; 

    if(id == KeyEvent.VK_UP){ 

     y -= speed;  
    } 

    if(id == KeyEvent.VK_DOWN){ 

     y += speed; 
    } 

    if(id == KeyEvent.VK_LEFT){ 

     x -= speed; 
    } 

    if(id == KeyEvent.VK_RIGHT){ 

     x += speed; 
    } 
} 

@Override 
public void keyReleased(KeyEvent e) { 
} 

} 

렌더링 클래스. 당신이 repaint() 후 액션 이벤트에 revalidate()라고하면

public class Render extends JPanel { 

public void paintComponent(Graphics g){ 
    super.paintComponent(g); 

    Main.main.render((Graphics)g); 
} 

}

+0

알아 냈어. "if (count> 20)"을 "if (count> = 20)"로 변경해야했습니다. "count + = 1"을 ActionListener로 이동합니다. –

답변

0

애니메이션이 부드럽게 만들 수있는 또 다른 한가지입니다.

관련 문제