Я пытаюсь сделать игру в java и столкнулся с проблемой. Когда моя программа реплицирует мой JFrame, она требует много энергии от моего процессора, мне было интересно, есть ли какая-то вопиющая ошибка, которую я пропускаю или способ уменьшить использование ЦП.repanting JPanel ест вверх cpu
Frame.java
public class Frame extends JFrame {
JFrame frame;
public static Panel panel;
public void makeFrame() {
frame = new JFrame("Game");
panel = new Panel();
panel.init();
frame.setSize(1000, 1000);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setVisible(true);
frame.add(panel);
}
}
GameLoop.java
public class GameLoop {
//render gets called 30 times per second
private void render() {
Frame.panel.repaint();
}
}
Panel.java
public class Panel extends JPanel {
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
mvmt.drawCha(g2d); //mvmt is an instance of Movement
}
}
Movement.java
public class Movement {
public void drawCha(Graphics2D g2d) {
g2d.drawImage(charImg, x , y, x + 40 , y + 40, 0, 0, 17, 28, null);
}
}
Заранее благодарим за помощь!
Из интереса, какой процессор вы используете, и что такое разрешение экрана? – sorifiend
@sorifiend Это интеллект i5 7-го поколения, а экран 1920x1080 –
Действительно ли перерисовка нужна 30/s? Почему бы просто не перекрасить огонь, если какое-либо государство изменится? –