我有一个游戏,我想用wasd按钮控制播放器。我写了一个keylistener来监视击键,但总是只有一次。玩家moced后,我必须用鼠标点击桌子上的其他按键。
以下是听众:
buttons[i][j].addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
switch(e.getKeyChar()){
case 'a':
action(x,y-1);
break;
case 'w':
action(x-1,y);
break;
case 'd':
action(x,y+1);
break;
case 's':
action(x+1,y);
break;
}
}
@Override
public void keyReleased(KeyEvent e) {
}
});
其中buttons是2维JButton数组。我不知道这是足够的信息,但请告诉我,如果需要更多代码(动作是移动功能)。
编辑:我有另一个侦听器,它会检查鼠标。我必须单击鼠标,然后我可以使用键一次(我必须重复这个)。这是另一个听众:
buttons[i][j].addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(model.getField(x, y)){
boolean corrpos=(model.latottOnMarCsirket(model.getPlayerPosX(), model.getPlayerPosY()+1) ||(model.latottOnMarCsirket(model.getPlayerPosX()-1, model.getPlayerPosY())));
model.setPosition(x, y);
refresh();
if(model.latottOnMarCsirket(x, y) && corrpos){
JOptionPane.showMessageDialog(null, "Nyert");
dispose();
}
}
}
});