尽管坐标固定,但JFrame背景仍在移动

时间:2019-05-04 22:04:47

标签: jframe

我正在使用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键之一时,我希望背景保持静止并且字符移动。但是,背景也会移动。

0 个答案:

没有答案