Java KeyListeners在一段时间后崩溃

时间:2015-12-29 09:12:42

标签: java keylistener

我目前正在用Java创建一个口袋妖怪游戏,并且已经开发了几个星期。但是我开始遇到我正在使用的Key Listeners的问题。问题在昨天大约12点钟随机开始,此后情况变得更糟。

public class Key implements KeyListener {
    int id = 0;
    int id2 = 0;

    @SuppressWarnings("deprecation")
    public void keyPressed(KeyEvent arg0) {
        id = arg0.getKeyCode();

        if (id == KeyEvent.VK_ESCAPE) {
            Main.frame.dispose();
            Main.thread.stop();
            Main.thread2.stop();
            Main.thread4.stop();
            Main.musicthread.stop();

            Main.Running = false;
            System.out.println("Exited");
            return;         
        }

        if (id == KeyEvent.VK_RIGHT) {
            Main.right = true;
            Main.left = false;
            Main.up = false;
            Main.down = false;

            Main.faceright = true;
            Main.faceleft = false;
            Main.faceup = false;
            Main.facedown = false;
            return;                     
        }
        else if (id == KeyEvent.VK_LEFT) {
            Main.left = true;
            Main.right = false;
            Main.up = false;
            Main.down = false;

            Main.faceright = false;
            Main.faceleft = true;
            Main.faceup = false;
            Main.facedown = false;
            return;         
        }
        else if (id == KeyEvent.VK_UP) {
            Main.up = true;
            Main.left = false;
            Main.right = false;
            Main.down = false;

            Main.faceright = false;
            Main.faceleft = false;
            Main.faceup = true;
            Main.facedown = false;
            return;         
        }
        else if (id == KeyEvent.VK_DOWN) {
            Main.down = true;
            Main.left = false;
            Main.right = false;
            Main.up = false;

            Main.faceright = false;
            Main.faceleft = false;
            Main.faceup = false;
            Main.facedown = true;
            return;         
        }

        if (id == KeyEvent.VK_S) {
            LoadLevel.save();
            return;         
        }

        if (id == KeyEvent.VK_1) {
            if (!Movement.POKEMONBATTLE) {
                debugger.KeyListener.tilechangedown = true;
            }
            return;         
        }

        if (id == KeyEvent.VK_2) {
            if (!Movement.POKEMONBATTLE) {
                debugger.KeyListener.tilechangeup = true;
            }
            return;         
        }

        if (id == KeyEvent.VK_Q) {
            if (!Movement.POKEMONBATTLE) {
                if(!debugger.KeyListener.debug){
                    debugger.KeyListener.debug = true;
                } 
                else { debugger.KeyListener.debug = false; }
            }
            return;         
        }

        arg0.consume();
        id = 0;
        return;     
    }

    @Override
    public void keyReleased(KeyEvent arg0) {
        id2 = arg0.getKeyCode();

        if (id2 == KeyEvent.VK_1) {
            debugger.KeyListener.tilechangedown = false;
            return;
        }

        if (id2 == KeyEvent.VK_2) {
            debugger.KeyListener.tilechangeup = false;
            return;
        }

        if (id2 == KeyEvent.VK_UP) {
            Main.up = false;
            try { Thread.sleep(1); } 
            catch (InterruptedException e) { e.printStackTrace(); }
            return;
        }

        if (id2 == KeyEvent.VK_DOWN) {
            Main.down = false;
            try { Thread.sleep(1); } 
            catch (InterruptedException e) { e.printStackTrace(); }
            return;
        }

        if (id2 == KeyEvent.VK_LEFT) {
            Main.left = false;
            try { Thread.sleep(1); } 
            catch (InterruptedException e) { e.printStackTrace(); }
            return;
        }

        if (id2 == KeyEvent.VK_RIGHT) {
            Main.right = false;
            try { Thread.sleep(1); } 
            catch (InterruptedException e) { e.printStackTrace(); }
            return;
        }

        arg0.consume();
        id2 = 0;
        return;     
    }

    @Override
    public void keyTyped(KeyEvent e) {} 
}

所以基本上,装扮KeyListener崩溃了,不会响应。我知道这不是导致这种情况的任何其他代码。我不认为它是Main类,其中keylistener被添加到JFrame中。我也在使用JPanel,所以如果这有所不同,请告诉我。 另外,代码确实从启动开始,随机崩溃,我不知道为什么,但崩溃中没有模式。 如果你知道造成这种情况的原因,请告诉我,因为这是一个主要问题。 如果我不能尽快修复它,我可能正在编辑世界的一部分,然后它崩溃了,我无法保存它!

编辑: 另外,我没有篡改KeyListeners

0 个答案:

没有答案