2010-06-18 2 views
1

모든 그래픽을 포함하는 JPanel 캔버스를 만들었습니다. 즉 JLabel입니다. 움직이는 스프라이트를 작동 시키려면 확장 된 JLabel 클래스의 paintComponent를 반드시 타고 있어야합니다. 이 방법으로 애니메이션 스프라이트를 성공적으로 구현했습니다.이것은 나쁜 습관입니까? Multiple Graphics2D Objects

Graphics2D 캔버스를 가지고 자신의 Graphics2D에 여러 개의 '이미지'를 포함시키는 것은 나쁜 습관입니까?

답변

2

JPanelJLabel으로 전달되는 것과 같지만 다른 경계와 오프셋이 있어야하므로 지나치게 많은 중량이 들지 않을 것이라고 생각하지 않습니다.

내 말은 스윙은 객체 계층 구조의 모든 요소를 ​​표시 할 수있는 새로운 그래픽 컨텍스트를 할당하지 않지만 다른 기능을 사용하는 동일한 그래픽 컨텍스트를 할당한다는 것입니다. 이것은 panel.getGraphics() == label.getGraphics()을 의미하지는 않지만 완전히 다른 대상은 아닙니다. 어떤 경우

, 당신은 많은 애니메이션 작업을 할 필요가 있다면 나는 당신이 당신의 자신의 스프라이트 클래스

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

다면 같은 paintComponent 수준에서 모든 것을 처리하는 것이 좋습니다 것입니다. 또는 적어도 Java2D는 CoreAnimation이 아니기 때문에 항상 그렇게했습니다. 움직이는/애니메이션 된 내용을 레이어 단위로 사용하도록 만들어졌습니다.

관련 문제