我打算写一个简单的太空射击游戏。我读过 repaint() 方法只是一个请求,它不会在每次调用时都执行。我相信我注意到了这一点,因为当我移动它时,我的宇宙飞船往往会略微滞后。目前,我只是在 JPanel 的 paintComponent() 方法中绘制我的船,并定期调用 repaint()(我的面板也是可运行的)。看到 repaint() 可能会把我搞砸,我正试图找到一种方法来解决它,但是我已经没有想法了。我到目前为止的代码:
private void renderGraphics() {
if (MyImage == null) {
MyImage = new BufferedImage(getPreferredSize().width,
getPreferredSize().height, BufferedImage.TYPE_INT_RGB);
}
MyGraphics = MyImage.getGraphics();
MyGraphics.setColor(Color.BLACK);
MyGraphics.fillRect(0, 0, getPreferredSize().width, getPreferredSize().height);
MyGraphics.drawImage(ship.getImage(), ship.getCurrentX(), ship.getCurrentY(), null);
}
这个想法是创建我自己的图形,然后让 JPanel 绘制它,并在我的 run() 方法中继续调用它而不是 repaint(),但是我不知道该怎么做。我会就此事提出任何意见。