我基本上是在编写一个简单的游戏引擎,但我的精灵/图像没有出现在它们应该出现的时候......或者根本没有出现时遇到了问题!
我会尽量保持这个简单。我有一个 Sprite、GameEngine 和 Display 类。在游戏循环中,我有一个方法可以设置我的 Sprite 的新位置(所以它只设置 x 和 y 变量)。接下来我调用一个转换方法,它执行以下操作:
public void transform() {
affineTransform.setToIdentity();
affineTransform.translate(x, y);
}
然后,我在 Sprite 中调用 draw 方法:
public void draw() {
graphics2D.drawImage(image, affineTransform, jFrame);
}
最后,在我的线程中,我在 JFrame(Display 类)上调用 repaint()。我对该类的绘制方法如下:
public void paint(Graphics g) {
g.drawImage(backbuffer, insets.left, insets.top, this);
}
但是什么都没有出现,除了黑屏!
我也对 Graphics g 和 Graphics2D 以及何时使用其中任何一个感到困惑。(覆盖的绘制方法使用图形 g)。作为记录,我在通过调用 backbuffer.createGraphics(); 创建的类中有一个 Graphics2D 变量;
让我感到困惑的另一件事是这个 AffineTransform ......我已经阅读了文档,但我仍然对如何以及何时使用它以及它似乎做什么感到完全困惑。有没有相对简单的解释?
当然这应该工作......我在这里错过了什么吗?