1

だから私は、ステートメントを使用してキャラクターが動く単純なゲームを書こうとしてきました

character1.x+=0.1f*delta

ここで、delta はフレーム間の時間 (ミリ秒単位) です。これは、フレームごとに移動したい場合にうまく機能しますが、その速度で設定された距離 (50 ピクセル、またはゲーム内の 1 つのタイル) を移動できるようにしたいと考えています。for() ループを使用すると、スプライトが最大速度で移動するので、それはできません。キーを 1 回押すだけで動作する必要があるため、キーを押し続ける必要はありません。

もちろん、私は Java でほとんど何もしたことがないので、私が見逃している非常にばかげた単純な解決策があるでしょう。とりあえず瞬間的な動きに変えればいいんですけど、ギクシャクしてきます。誰か助けてくれませんか?

4

1 に答える 1

0

この場合、コンポーネントにkeyListenerを追加することをお勧めします。

    yourComponent.addKeyListener(new KeyAdapter () { // Possibly your Frame
             @Override // Overrides the keyPressed event
             public void keyPressed(KeyEvent e) {

                  if ( e == YOUR_KEY_CODE ) { 
                       for( int var = 0; var < yourDistance; var ++ ){
                          yourSpriteComponent.x += 1;
                          try{
                             Thread.sleep(yourTimeInMilliSec);
                          } catch( Exception e ){
                             // Your catch block here
                          }
                       }
                  }

            }
    });

YOUR_KEY_CODEは、for()ループを実行するためにユーザーが押す必要のあるキーです。キーコードはjavadocにあります

于 2012-12-07T05:48:20.393 に答える