我不知道我一直在搜索的内容有什么问题,但我必须想象我搜索错了。人们是否有以下方式的示例:
在选项屏幕上,允许用户更改在其应用程序中执行的操作:
-ie 将向上箭头更改为 W 键,或将向下箭头更改为 S 键。WASD 与 ULDR。
我不是懒惰,我只是看到了这么多具有这种设置的游戏,我不想重新发明轮子。
谁能给我一个如何做到这一点的例子或请给我链接?非常感谢。
在这里查看 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中有效。