【发布时间】:2011-03-06 15:26:42
【问题描述】:
我基本上是在编写一个简单的游戏引擎,但是我的精灵/图像没有出现在它们应该出现的时候......或者根本没有出现!
我会尽量保持简单。我有一个 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... 我已经阅读了文档,但我仍然完全不知道如何以及何时使用它 - 以及它看起来究竟是做什么的。有没有比较通俗的解释?
当然这应该可以工作...我在这里遗漏了什么吗?
【问题讨论】:
-
考虑创建并发布SSCCE(请点击链接),这是一个可编译、可运行的小型程序,展示了您解决此问题的最佳尝试。然后我们可以检查您的代码、运行它、修改它并最好地帮助您修复它。
标签: java graphics2d