1

それで、私は1時間立ち往生している状況に直面しています。

これが私の状況です。このゲームのゼルダの伝説のNESのように、ゲームのキャンバスとは別に「Life:」という画像を追加したいと思います。

例

問題は次のとおりです。私のコードはまだ私のゲームキャンバスしか表示していません。

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

        }



    }
4

1 に答える 1

1

パネルでは、そのメソッドShipLifeTitleをオーバーライドする必要があります。getPreferredSize

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

これによりBorderLayout、パネルをどのようにレイアウトするかについてのヒントが得られます。

于 2013-02-09T01:34:23.373 に答える