2016-03-01 3 views
0

Так что я могу получить прямоугольник для отображения на экране, но когда я запускаю таймер, он просто рисует растущий прямоугольник по экрану, а не перемещает его как прямоугольник, который он начинал как. Любая помощь будет отличной, спасибо.Ошибка Java Animation Issue

Game Class

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);