1

我创建了一个包含所有图形的 JPanel 画布;即JLabel。要使动画精灵工作,您必须覆盖扩展 JLabel 类的paintComponent。我已经以这种方式成功实现了动画精灵。

拥有一个 Graphics2D 画布然后在自己的 Graphics2D 中有多个“图像”是不好的做法吗?

4

1 回答 1

2

我认为它不会太重,因为Graphics2D你的JPanel应该与传递给的相同,JLabel但具有不同的边界和偏移量。

我的意思是 Swing 没有分配新的图形上下文,您可以在其上显示对象层次结构中的每个元素,但它使用具有不同功能的相同元素。这并不意味着它们panel.getGraphics() == label.getGraphics()都不是完全不同的对象。

无论如何,如果您需要做很多动画工作,我建议您拥有自己的精灵类

class Sprite
{
  Point2D position;
  Rectangle2D size;
  float rotation;
}

并在同一paintComponent级别处理所有事情。或者至少我一直都是这样做的,因为 Java2D 不像 CoreAnimation 那样被用于在每层的基础上移动/动画内容。

于 2010-06-18T14:07:59.120 回答