我不知道我一直在寻找什么是错的,但我不得不想象我的错误。有没有人做过以下事情的例子:
在选项屏幕上,允许用户更改在应用程序中执行操作的键:
-i.e。将箭头更改为W键,或将向下箭头更改为S键。 WASD与ULDR。
我不是很懒,我说,我刚看过很多有这种设置的游戏,我不想重新发明轮子。
有人能给我一个如何做到这一点或链接我的例子吗?非常感谢。
答案 0 :(得分: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。