2016-03-01 63 views
0

所以我可以將矩形渲染到屏幕上,但是當我運行計時器時,它只是在屏幕上繪製一個越來越大的矩形,而不是像它開始的矩形那樣移動它。任何幫助將是偉大的,謝謝。Java動畫問題

遊戲類

public class Game implements ActionListener{ 

static Game game; 
Render render; 

int x; 
int y; 
int velx = 2; 


Game(){ 

    Timer timer = new Timer(10, this); 

    render = new Render(); 

    JFrame frame = new JFrame("My Game"); 
    frame.setSize(500, 500); 
    frame.setVisible(true); 
    frame.setResizable(false); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.add(render); 

    timer.start();   
} 

public void render(Graphics g){ 
    g.setColor(Color.red); 
    g.fillRect(x, y, 50, 50); 
} 

public static void main(String [] args){ 
    game = new Game(); 

} 

@Override 
public void actionPerformed(ActionEvent e) { 
    int velx = 2; 
    x = x + velx; 
    render.repaint(); 

} 
} 

呈現類

public class Render extends JPanel { 
public void paintComponent(Graphics g){ 

    super.paintComponents(g); 

    Game.game.render((Graphics)g); 

} 
} 

回答

0

嘗試初始化你的計時器像下面(進口javax.swing.Timer中):

timer = new Timer(10, new ActionListener() 
    { 

     @Override 
     public void actionPerformed(ActionEvent e) { 
      repaint(); 
     } 

    }); 

閱讀起來就可以了here

1

問題是當我這樣做的時候。

super.paintComponents(g); 

我改變了它,它的工作。

super.paintComponent(g);