Это плохая практика?Несколько объектов Graphics2D - PullRequest
1 голос
/ 18 июня 2010

Я создал холст JPanel, который содержит всю графику; а именно JLabel. Чтобы заставить работать анимированные спрайты, вам нужно перезаписать paintComponent расширенного класса JLabel. Я успешно реализовал анимированные спрайты таким образом.

Плохо ли иметь холст Graphics2D, а затем иметь несколько «изображений» в своем собственном Graphics2D?

1 Ответ

2 голосов
/ 18 июня 2010

Я не думаю, что он будет слишком тяжелым, поскольку Graphics2D вашего JPanel должен быть тем же, который передан в JLabel, но с разными границами и смещениями.

Я имею в виду, что Swing не выделяет новый графический контекст, в котором вы можете отображать каждый элемент внутри иерархии объектов, но он использует то же самое с различными возможностями. Это не значит, что panel.getGraphics() == label.getGraphics(), но и не являются совершенно разными объектами.

В любом случае, если вам нужно много анимированных работ, я бы предложил вам создать собственный класс спрайтов

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

и обрабатывать все на одном уровне paintComponent. Или, по крайней мере, я всегда так делал, поскольку Java2D не похож на CoreAnimation, которая предназначена для использования на уровне слоев для перемещения / анимации контента.

...