2016-10-01 23 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)"に変更しなければならなかった。 ActionListenerに "count + = 1"を移動します –

答えて

0

もう一つはあります。