如何使密钥触发的事件只发生一次?

时间:2016-12-10 06:01:41

标签: java keyboard

免责声明:我真的很陌生,如果有以下情况,我会提前道歉: 1)我的问题已被提出(我已经尝试过搜索并且在找到我需要的东西时遇到了很多麻烦) 或2)如果我没有正确地提出问题。

基本上,我正在尝试制作一款游戏,按下空格键会触发一种“超级能量”,只会执行一次动作。之后,如果他们试图再次按下它,它会运行某种对话框,说明他们的一次性超级力量已被使用。

我有什么:

       try { 

            Key move = canvas.getLastKey();
            int space = 0;

            if(move == Key.SPACE) {
                if (space == 0) {
                    space = 1;
                }
                if (space == 2){
                    JOptionPane.showMessageDialog(null, "superpower already used");
                }
            }



            if( space == 1 ) {
                //action here

                canvas.resetKey(); 
                space = 2; 
            }
       }

现在,超级英雄动作正处于无限循环中,但如果我在此处重置密钥:

            if(move == Key.SPACE) {
                if (space == 0) {
                    space = 1;
                    canvas.resetKey();
                }

用户可以一次又一次地使用超级电源。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

在第三行中,您已写入int space=0,因此您的变量将不断重置为0 ... 你必须在别处初始化它(程序的开头是任何全局变量的好地方)。

答案 1 :(得分:0)

您应该考虑在try块之外移动int space = 0。我想你的try块会被重复调用,所以你应该在全局范围内声明这个变量。