2

Java2Dを使用してゲームを作成する方法についての非常に優れたチュートリアルを見つけました。このチュートリアルには、画面上で小さな宇宙船の画像を移動する方法を示す「スプライトの移動」というセクションがあります。私はクラフトで遊んでいて、それが時々画面上で「ブロック」していることに気づきました。いくつかのテストと問題について考えた後、キーボードの矢印を使用するときに、たとえば左と右を同時に押すと、動きがブロックされるため、ブロックの問題が発生していることがわかりました。

だから私の質問は:この種のキーボードイベントをどのように処理するのですか?左ボタンを押し続けているときにそれを押し続けてから右ボタンを押すと、キャラクターの動きが妨げられませんか?

これは非常によくあることだと思います。なぜなら、演奏しているときは左から右に切り替えますが、一瞬、左と右を同時に押しているからです。

4

1 に答える 1

3

これは複数の方法で行うことができます。1 つの方法は、プログラムでブール値を使用することです。

特定のキーを押したときにブール値を true に設定し、離したときに false に設定できます。すなわち:

int x,xSpeed;

boolean movingLeft  = false;
boolean movingRight = false;

public void keyPressed(KeyEvent e) {
    int key = e.getKeyCode();
    if(key == KeyEvent.VK_LEFT){
        movingLeft = true;
    }
    if(key == KeyEvent.VK_RIGHT){
        movingRight = true;
    } 
}

public void keyReleased(KeyEvent e) {
    int key = e.getKeyCode();
    if(key == KeyEvent.VK_LEFT){
        movingLeft = false;
    }
    if(key == KeyEvent.VK_RIGHT){
        movingRight = false;
    } 
}

public void moving(){
    if(movingLeft){
        x -= xSpeed;
    }
    if(movingRight){
        x += xSpeed;
    }
}

では、このコードを見てみましょう。「else if」を使用しているため、右に移動するか、左に移動します。私はこのコードをテストしていないので、これが機能するかどうかはよくわかりません:)

あなたの考えを教えてください。幸運を祈ります!

于 2012-05-05T20:27:28.923 に答える