【发布时间】:2010-06-18 13:58:08
【问题描述】:
我创建了一个包含所有图形的 JPanel 画布;即JLabel。要使动画精灵工作,您必须覆盖扩展 JLabel 类的paintComponent。我已经通过这种方式成功实现了动画精灵。
拥有一个 Graphics2D 画布然后在它们自己的 Graphics2D 中拥有多个“图像”是不好的做法吗?
【问题讨论】:
标签: java swing java-2d graphics2d
我创建了一个包含所有图形的 JPanel 画布;即JLabel。要使动画精灵工作,您必须覆盖扩展 JLabel 类的paintComponent。我已经通过这种方式成功实现了动画精灵。
拥有一个 Graphics2D 画布然后在它们自己的 Graphics2D 中拥有多个“图像”是不好的做法吗?
【问题讨论】:
标签: java swing java-2d graphics2d
我认为它不会太重,因为 JPanel 的 Graphics2D 应该与传递给 JLabel 的相同,但边界和偏移量不同。
我的意思是 Swing 并没有分配一个新的图形上下文,您可以在上面显示对象层次结构中的每个元素,但它使用相同的不同功能。这并不意味着panel.getGraphics() == label.getGraphics(),但它们都不是完全不同的对象。
无论如何,如果你需要做很多动画工作,我建议你有自己的精灵类
class Sprite
{
Point2D position;
Rectangle2D size;
float rotation;
}
并在同一paintComponent 级别处理所有内容。或者至少我一直都是这样做的,因为 Java2D 不像 CoreAnimation,它被用于在每层的基础上移动/动画内容。
【讨论】: