【问题标题】:Cannot get image to move where I want it to (and update continuously)?无法让图像移动到我想要的位置(并不断更新)?
【发布时间】: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


【解决方案1】:
  1. 回答部分问题:

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

    基本上,使用Graphics2D,您可以比使用Graphics 做更多的事情。对于 Sun JVM 1.5+,it should be safe to cast the Graphics object you get in paint() to Graphics2D

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

    您应该确保您没有在稍后抛出的Graphics[2D] canvas(我将使用这个术语来指代Graphics[2D] 对象提供的可绘制区域)上绘图离开。如果您在单独的画布上绘制图像,则应确保随后将该图像绘制到实际的显示画布上。

  3. 我对@9​​87654332@ 并没有很好的解释,但也许这些会有帮助?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-02
    • 1970-01-01
    • 2014-11-18
    • 2021-10-24
    相关资源
    最近更新 更多