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)。

仅声明一种方法的回调:

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 回答