0

私が検索してきたものの何が問題なのかはわかりませんが、検索が間違っていると想像する必要があります。人々が次のことを行った方法の例はありますか?

オプション画面で、ユーザーがアプリケーションでどのキーが何をするかを変更できるようにしました:

-ie 上向き矢印を W キーに変更するか、下向き矢印を S キーに変更します。WASD対ULDR。

私は怠惰ではありません。言うまでもなく、私はこのセットアップを備えた非常に多くのゲームを見てきました。ホイールを再発明したくありません.

誰かがこれを行う方法の例を教えてくれますか、私にリンクしてください? 本当にありがとう。

4

1 に答える 1

1

Java コールバック リファレンスについては、こちらをご覧ください http://www.javaworld.com/javatips/jw-javatip10.html

前のサイトで説明されているようなキーとコールバックのディクショナリを作成するという考え方です (ディクショナリ リファレンスhttp://docs.oracle.com/javase/7/docs/api/java/util/Dictionary.html )。

メソッドが 1 つだけ宣言されているコールバック:

public interface MovementCallbackInterface {

    public void method();
}

次に、次のようなクラスを作成します。

public class MoveForward implements MovementCallbackInterface {

    public void method() {
        //Move forward code
    }

次に、辞書を作成します。

Dictionary<KeyEvent, MovementCallbackInterface> d;

各キーの実行時に、次のようなコールバックを割り当てます

MoveForward mf = new MoveForward();
d.put(KeyEvent.VK_W, mf);

キーを切り替えたい場合は、ディクショナリのキー割り当てを変更して、新しいコールバックを指すようにするだけです。

d.remove(KeyEvent.VK_W);
d.put(KeyEvent.VK_U, mf);

次に、キーが押されるたびに、辞書でそのキーを検索し、MovementCallbackInterface オブジェクトのメソッドを呼び出します。

d.get(KeyEvent.VK_W).method().

おそらく最速の方法があるかもしれません.C ++では、たとえば関数ポインタを使用できます.C#では、クラス全体ではなく関数のみを含むデリゲートを使用できます。とにかく、このメソッドは Java で動作します。

于 2013-10-18T17:02:03.530 に答える