0

次のコードは機能しません。キーを押す方法を使用してプレーヤーを左、右、上、下に移動しようとしていますが、キーを押しても反応しません。コード全体を貼り付けたのではなく、ボックスを移動する部分だけを貼り付けました。他のコンテンツの移動を実現するための他の if ステートメントがあります。


public class innerClassKeyPressed {


   void  keyPressed( KeyEvent e)
   {
    int key= e.getKeyCode();
    if(key==KeyEvent.VK_LEFT){
        dx=-1;
    }
     if(key==KeyEvent.VK_RIGHT){

         dx=1;
    }
    if (key==KeyEvent.VK_UP){
        dy=-1;
    }
     if (key==KeyEvent.VK_DOWN){
        dy=1;
     }
      if (key == 82)
     {
          initLevel(currlevel);

     } //R
     if (key == 78)
     {
         currlevel++;
          initLevel(currlevel);
      } 

      if ( (key == KeyEvent.VK_LEFT ) && ( key  == KeyEvent.VK_RIGHT ) && 
      (key == KeyEvent.VK_UP ) && ( key == KeyEvent.VK_DOWN )) { 

         return;
       }


        for (int row=0; row < myArray.length; row++)

        {
            for (int column=0; column < myArray[row].length; column++)
            {
                 if( myArray[row][column]==  Contents.PLAYER)                       { 
                        if (myArray[row+dy][column+dx] == Contents.BOX)
                        {

                            if (myArray[row+dy*2][column+dx*2] == Contents.EMPTY)

                             {

                                myArray[row+dy][column+dx]= Contents.PLAYER; 
                                 myArray[row][column]= Contents.EMPTY;

                                myArray[row+dy*2][column+dx*2]= Contents.BOX;
4

2 に答える 2

1

KeyListeners機能しないことで有名です (実際には機能しますが、あなたが考えている方法とは異なります)。

問題KeyListenerは、登録されているコンポーネントがフォーカス可能で、フォーカスがある (キーボード フォーカスとも呼ばれる) 場合にのみ反応することです。

代わりに、トリガーされるフォーカス状態を決定できるキー バインドを使用する必要があります。

于 2013-04-16T04:17:01.397 に答える
0

JFrameとCanvasを使用してプレーヤーを描画していると推測しているので、JFrameにKeyListenerを追加していないため、これが機能していないと推測します。

例えば:

JFrame frame = new JFrame();
frame.addKeyListener(keylistener);
于 2013-04-16T04:08:46.137 に答える