0

Game.height のすべての値に対して達成したいことの詳細を示す図があります。問題は、Game.height のすべての値に対して画像の位置をスケーリングするときに、変数 circle_dy の数式が正しくないように見えることです。

画像

 // images of the game
        private Image circle;
    // ball's spawning location 
        private int circle_dx = 0;
        private int circle_dy = (Game.height/2) + 30 ;

    public class GameBoard{ 

    public GameBoard(){

            // construct an ImageIcon specified by the given string directory
        ImageIcon circle = new ImageIcon("src/pics/circle.png");
        // get image type of the ImageIcon and assign it into the image instance                                                  //variable
        this.circle = circle.getImage();


        setBackground(Color.black);


    }

    // appropriate method to paint is paintComponent
        public void paintComponent(Graphics g){
            // if you are overriding a method call the super class paintComponent method
            // because you are creating your own version of the paintComponent method
            super.paintComponent(g);

            // draw the image itself at a particular location on the JPanel


            g.drawImage(this.circle,circle_dx,circle_dy,this);
            }
   }






public class Game extends JFrame{

        public static final int width = 600;
        public static final int height = 200;

    public Game(){
    // add the JPanel to the jframe
    add(new GameBoard());
    setVisible(true);
    // set the size of the jframe
    setSize(width,height);
    }

}
4

1 に答える 1

1

提案として:

ボールのサイズを更新するウィンドウサイズ変更のリスナーを作成します。

必要なサイズ変更を計算するには、ウィンドウのxサイズとyサイズを取得します(リスナーが終了するたびにそれらを保存することをお勧めします)。古い値と新しい値を%として計算し、同じ%でボールをスケーリングします。

参考:http ://docs.oracle.com/javase/tutorial/uiswing/events/componentlistener.html

于 2013-01-01T18:32:02.927 に答える