2013-02-09 2 views
1

그래서 한 시간 동안 붙어 버린 상황에 직면 해 있습니다.Java의 게임 캔버스에서 별도의 이미지를 추가하는 방법

여기 내 상황이 있습니다. "Life :"라는 게임 이미지를 NES 용 젤다의이 게임과 매우 흡사하게 추가하고 싶습니다.

Example

문제는 다음과 같습니다 내 코드는 여전히 내 게임 캔버스를 보여줍니다.

public class Game extends Canvas { 

      private Game(){ 

      JFrame container = new JFrame("Arcade Shooter Clone"); 

      panel = (JPanel)container.getContentPane(); 
      panel.setLayout(new BorderLayout()); 

      panel.add(this,BorderLayout.CENTER); 

      ShipLifeTitle shipLifeTitle = new ShipLifeTitle(); 
      panel.add(shipLifeTitle,BorderLayout.SOUTH); 
      } 

    } 

    public class ShipLifeTitle extends Sprite { 

     private Image image; 

     public ShipLifeTitle() 
     { 
      try 
      { 
       image = ImageIO.read(new File("src/Ship/shipLifeTitle.PNG")); 


      } 
      catch(IOException e) 
      { 
       e.printStackTrace(); 
      } 

     } 

     @Override 
     public void draw(Graphics g) { 
      // TODO Auto-generated method stub 
      g.drawImage(image, 200, 200, null); 
     } 


    } 

    public class Sprite extends Component implements GameComponent { 

     public Vector2D position; 
     public Vector2D velocity; 

     @Override 
     public void update(long milliseconds) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void draw(Graphics g) { 
      // TODO Auto-generated method stub 

     } 



    } 

답변

1

ShipLifeTitle 패널에서의 getPreferredSize 메소드를 오버라이드 (override) 할 필요가있다.

public class ShipLifeTitle extends Sprite { 
    //... 
    public Dimension getPreferredSize() { 
     return new Dimension(image.getWidth(null), image.getHeight(null)); 
    } 
} 

이것은 당신이 패널이 밖으로 laied 싶은 방법에 대한 BorderLayout 몇 가지 힌트를 줄 것이다

+0

내가했던이 사용자의 피드백을 기반으로하지만, 내가 이런 식으로 코딩했다 그 대신 구문을 허용하지 않았다 : public Dimension getPreferredSize() { 새로운 차원을 반환합니다 (image.getWidth (null), image.getHeight (null)); } 이제 남쪽 영역에는 회색 영역이 있지만 여전히 이미지가 표시되지 않습니다. My ShipLifeTitle은 패널이 아닌 스프라이트입니다. – Nicholas

+0

죄송합니다, 제 잘못,'BufferedImages'를 사용합니다. – MadProgrammer

+0

'스프라이트 '가'paintComponent' 메소드에서'draw'를 호출한다고 가정하면, 코드의 일부만 남았습니다 ... – MadProgrammer

관련 문제