Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
785 views
in Technique[技术] by (71.8m points)

swing - How to fix animation lags in Java?

I am trying to animate my game in Java using the code below in a subclass of JComponent, but this code causes lags and jitters in the animation, and objects appear to be "split" as they are redrawn rapidly on the screen. How can I resolve this issue? Should I redraw each item on a separate thread?

public GameScene(){
   setDoubleBuffered(true);
   run();
}

...
public void run() {
    Thread animation = new Thread(new Runnable() {
        public void run() {
            updateGraphics();
        }
    });

    animation.start();
}

public void updateGraphics() {
    while (true) {
        repaint();

        try {
            Thread.sleep(5);
        } catch (Exception ex) {

        }
    }
}
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Instead of using Java Timer try with Swing Timer that is more suitable for Swing application.

Please have a look at How to Use Swing Timers

Here is the sample code:

int delay = 1000; //milliseconds
ActionListener taskPerformer = new ActionListener() {
  public void actionPerformed(ActionEvent evt) {
      //...Perform a task...
  }
};
new Timer(delay, taskPerformer).start();

Find a Sample code here

enter image description here


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...