2016-03-01 67 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);