1
我想创建一个坦克游戏,但我仍然在学习如何在Java中进行图形编程。我最初尝试用KeyListeners移动两个图像中的一个(哪一个取决于哪个玩家要去哪个)。有人告诉我,Key绑定可能是更有效的方法。下面是我的一些代码:使用键绑定来移动图像
public class FrameMain extends JFrame{
...
public FrameMain(){
this.addBindings();
的addBindings()方法:
protected void addBindings() {
InputMap inputMap = pnlPlay.getInputMap();
KeyStroke key = KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, Event.KEY_PRESS);
inputMap.put(key, pnlPlay.pnlGame.MoveTank(2, pnlPlay.nPlayer));
key = KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, Event.KEY_PRESS);
inputMap.put(key, pnlPlay.pnlGame.MoveTank(-2, pnlPlay.nPlayer));
}
的MoveTank方法:
public int MoveTank(int xChange, int nPlayer){
System.out.println("move "+nPlayer);
if(nPlayer==0){
tank1.x+=xChange;
}else tank2.x+=xChange;
repaint();
return 1;
}
我遇到的问题是,当我按无论是右键还是左键,我都没有得到任何回应。它应该打印“移动#”,但它不是。如果有人知道我做错了什么,或者可以指向我做一些代码的方向,我会很感激。我从看到代码的工作顺序中学到最好,然后玩弄它。
方法在Java中应该以小写字母开头。 – BVSmallman
你可以看看我发布在这里的例子:[Swing Timer and Key Bindings](http://stackoverflow.com/a/6887354/522444)。 –
非常感谢!该代码正是我所期待的。 – user1366342