我想在java中制作游戏并遇到问题。当我的程序重新绘制我的JFrame时,它需要CPU的很多能量,我想知道是否有一些我忽略的明显错误或者减少CPU使用率的方法。重新绘制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);
}
}
在此先感谢您的帮助!
出于兴趣你正在使用哪种CPU,屏幕分辨率是多少? – sorifiend
@sorifiend这是一个英特尔i5第7代,屏幕是1920x1080 –
重新绘制真的需要30/s?如果任何状态改变,为什么不只是重新喷漆? –