有 Java 编程相关的问题?

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

用于游戏的BuffereImage、Graphics和Canvas之间的java关系

我是一个相当新的程序员,我正在尝试使用Java制作一个非常基本的游戏,你只需在屏幕上移动一个精灵。到目前为止,我所完成的是创建一个精灵表类,该类加载到我的精灵表中,并将精灵表的BuffereImage保存为该类的字段,以及一个精灵类,该精灵类将从该字段获取子图像(精灵本身),并将其保存为精灵类中的字段。我已经测试过了,一切正常。我理解这可能不是典型的或“正确的”,有效的做事方式。我可以自己解决这个问题,但我现在的问题是理解BuffereImage、Graphics和Canvas之间的关系。我看过一个教程,其中一个家伙将他的精灵保存为一个BuffereImage,并使用它来创建一个图形。然后,他将这幅图绘制到画布上,并将画布添加到他的JFrame中。他在那里也加入了一个缓冲策略,以某种方式连接到他的图形,我一点也不理解。每当我试图使他的方法适应我的目的时,它总是不起作用。我已经看过无数次javadoc来寻找这些东西,并且都是单独得到的,但我似乎无法理解它们是如何结合在一起以实现我的目标的

简言之:有人能解释一下在2D游戏中显示精灵时,BuffereImage、Graphics和Canvas是如何结合在一起的,以及BuffersStrategy是如何使用的吗?适当和相关的方法?此方法是否适合渲染15 fps左右的移动精灵?等我的问题不是因为缺乏研究或知识,而是因为缺乏理解

非常感谢,任何建议都将不胜感激


共 (1) 个答案

  1. # 1 楼答案

    • BufferedImage是一种Image类型,它可以从代码中进行修改,但是,它无法将自己绘制到屏幕上
    • Canvas是一个AWT(重型)容器,通常用于通过其BufferStrategy提供激活绘画访问。这将显示在屏幕上
    • Graphics是一个抽象的图形库,旨在简化跨平台渲染

    Canvas通过它的BufferStragegy提供对Graphics实例的访问,这允许您绘制到Canvas(扩展为屏幕)。您可以使用这个Graphics上下文来绘制BufferedImage

    一个Canvas本身不能在屏幕上显示,它必须首先包含在某种类型的窗口中,如java.awt.Frame

    基本上,框架向用户显示CanvasCanvas通过BufferStrategyGraphics上下文提供对图形硬件的访问,BufferedImage提供可绘制到Graphics上下文的图像/图像数据的通用表示(属于Canvas

    也许你应该先看看JavaDocs for ^{}^{}BufferStrategy and BufferCapabilities2D Graphics的例子