有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无法将图像移动到我想要的位置(并不断更新)?

我基本上是编程一个简单的游戏引擎,但我有问题,我的精灵/图像没有出现时,他们应该。。。或者根本没有

我会尽量让这件事尽可能简单。我有一个精灵,游戏引擎和显示类。在gameloop中,我有一个方法设置我的精灵的新位置(因此它只设置x和y变量)。接下来,我调用一个transform方法,该方法执行以下操作:

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);
}

但是除了黑屏,什么也没有出现

我还对图形g和图形2D以及何时使用这两种图形感到困惑。(替代的绘制方法使用图形g)。作为记录,我在通过调用backbuffer创建的类中确实有一个Graphics2D变量。createGraphics()

另一件让我困惑的事情是这个仿射变换。。。我已经阅读了文档,但对于如何使用它以及何时使用它,以及它到底起到了什么作用,我仍然非常困惑。有没有相对简单的解释

当然,这应该是有效的。。。我是不是错过了什么


共 (1) 个答案

  1. # 1 楼答案

    1. 回答部分问题:

      From the Graphics2D JavaDoc 这个Graphics2D类扩展了Graphics类,为几何图形、坐标变换、颜色管理和文本布局提供更复杂的控制。这是在Java(tm)平台上渲染二维形状、文本和图像的基本类

      基本上,使用Graphics2D可以比使用Graphics做得更多。使用Sun JVM 1.5+,it should be safe to cast the ^{} object you get in ^{} to ^{}

    2. 我刚刚注意到:作为记录,我在类中确实有一个Graphics2D变量,它是通过调用backbuffer创建的。createGraphics()

      你应该确保你不是在Graphics[2D]画布上画画(我会用这个词来指Graphics[2D]对象提供的可画区域),你以后会把它扔掉。如果要在单独的画布上绘制图像,则应确保随后将该图像绘制到实际的显示画布上

    3. 我对AffineTransform没有很好的解释,但也许这些会有帮助