>im 正在制作一个 Java 摇摆游戏。我听说 swing 组件不使用活动渲染(您只能覆盖绘制方法),因此,我一直在将 BufferStrategy 与 Canvas 一起使用。现在我从JComponnent 和 JPanel 那里发现了getGraphics()
方法。如果我们可以在 swing 组件中进行活动渲染,为什么游戏教程仍然覆盖paint()
和paintComponent()
?
使用getGraphics
,它可以返回null
,只不过是最后一个绘画周期的快照。
您为其绘制的任何内容都将在下一个绘制周期中移除。 在 Swing 中,您无法控制绘制过程,并且可能出于多种原因启动绘制周期,其中许多原因您无法控制或会通知(除非在调用绘制时)
基本答案是,如果您想控制绘画过程,则必须使用BufferStrategy
或实现您自己的屏幕外绘图例程。 在 Swing API 中,您无法实现真正的活动绘制过程,您可以在一定程度上伪造它,但 Swing 仍然能够在它认为合适的情况下执行自己的绘制周期。
查看 AWT 中的绘画和 Swing 和执行自定义绘画,了解有关 Swing 中绘画如何工作的更多详细信息