我需要从文件中读取可定制的操作并将它们绑定到程序的键。
如果我有这样的文件:
w:up
s:down
a:left
d:right
我将如何让这个运行?
我看到它的唯一方法是这样做:
// hardcoded String to Action to turn "up" into an actual instruction
HashMap<String, Action> actions = new HashMap<String, Action();
actions.put("up", new Up());
actions.put("down", new Down()); // etc.
HashMap<Integer, Action> keybindings = new HashMap<Integer, Action>();
while (!endOfFile) {
int key = letterToKeycode(getKey()); // gets keycode for letter
Action action = actions.get(getCommand());
keybindings.put(key, action);
endOfFile = isEndOfFile();
}
然后当我的 keylistener 方法被调用时,它会:
public void keyPressed(int keycode) {
keybindings.get(keycode).doAction();
}
并且doAction()
会在每个Action
班级。所以如果我有Up()
,它会调用person.moveUp()
。
如果我要重新绑定我的大部分键,可能会导致数百个只有几行的类。
上面的概念有一些东西,一个 switch 语句让我想避免它们。这样做有“更清洁”的技巧吗?
作为我的意思的一个例子,Eclipse 有你可以在首选项中设置的键绑定,所以当你按下一个键时,它会触发一个事件并根据这些设置解释键应该做什么。我正在尝试这样做。