2016-12-10 5 views
0

免責事項:私は本当にこれで新しく、私は事前に謝罪しています: 1)私の質問は既に尋ねられました(私は検索を試み、私が必要なものを見つけるのに苦労しました) または2質問を正しく聞かない。キーでトリガされたイベントを一度しか作成しないようにするにはどうすればよいですか?

基本的には、スペースバーを押すことで一連のアクションを1回だけ実行する「スーパーパワー」がトリガーされるゲームを作ろうとしています。その後、もう一度押すと、一度のスーパーパワーが既に使用されているというダイアログボックスが表示されます。私が持っているもの

:今

 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(); 
       } 

をユーザーがちょうどスーパーを使用することができます - 何度も繰り返しパワー。どんな助けもありがとう!

答えて

1

int space=0は、変数が常に0にリセットされるように書かれています。 これはどこかで初期化する必要があります(プログラムの先頭はグローバル変数に適しています)。

+0

ありがとう!それをして、 "move = null;"と言うと、スペース= 2のときはすべてが完璧に機能しました。 –

0

tryブロックの外側でint space = 0を移動することを検討する必要があります。あなたのtryブロックが繰り返し呼び出されると思いますので、この変数をグローバルスコープの下で宣言する必要があります。

関連する問題