JFrame Фон движется, несмотря на фиксированные координаты - PullRequest
1 голос
/ 05 мая 2019

Я использую JFrame для отображения некоторых изображений.Я только начал, и в этот момент я хочу, чтобы персонаж двигался по экрану.У меня есть 2 файла, один, который расширяет JFrame (отображает изображения) и файл бегуна.Одно изображение является неподвижным фоном, а другое - подвижным символом, однако кажется, что оба изображения движутся, а положение фона неподвижно.

Я только начал использовать JFrame и понятия не имею, что происходит.

Это файл, который расширяет JPanel:

public class testScene extends JPanel{

    private int x = 60;
    private int y = 60;
    private boolean end = false;

    public void paintComponent(Graphics g){
        super.paintComponent(g);
        ImageIcon background = new ImageIcon("images\\map\\TestMap1.png");
        background.paintIcon(this, g, 0, 0); 

        ImageIcon protag = new ImageIcon("images\\protag\\protag_f.png");
        protag.paintIcon(this, g, x, y);    
    }

    public int getX(){return x;}
    public int getY(){return y;}
    public boolean getEnd(){return end;}

    public void setX(int i){x=i;}
    public void setY(int i){y=i;}
    public void setEnd(boolean b){end = b;}
}

Это предполагаемый бегун:

public class testSceneRunner{
    public static void main(String[] args){ 

        testScene scene = new testScene();
        scene.setBackground(Color.black);

        JFrame jf = new JFrame();
        InListner keyIn = new InListner(); //this is a keyboard listner

        jf.addKeyListener(keyIn);
        jf.setTitle("Test Scene");

        jf.setSize(1020,600);
        jf.setVisible(true);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.add(scene);

        while(!scene.getEnd()){
            //just changes x or y based on keyboard input
            try {
                Thread.sleep(25);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            if(keyIn.getPressed() == 87){
                scene.setY(scene.getY()-1);
            }
            if(keyIn.getPressed() == 65){
                scene.setX(scene.getX()-1);
            }
            if(keyIn.getPressed() == 83){
                scene.setY(scene.getY()+1);
            }
            if(keyIn.getPressed() == 68){
                scene.setX(scene.getX()+1);
            }
            if(keyIn.getPressed() == 69){
                scene.setEnd(true);
            }
            jf.repaint();
        }
        jf.dispatchEvent(new WindowEvent(jf, WindowEvent.WINDOW_CLOSING));
    }
}

Я хочу, чтобы фон оставался неподвижным, а персонаж двигалсякогда нажата одна из клавиш WASD.Тем не менее, фон также перемещается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...