我有一个你可以攻击的游戏。当空格键被按下时,武器向下移动,当它被释放时,它应该向上移动。
1368696607559 - Pressed
1368696608052 - Released
1368696608053 - Pressed
1368696608082 - Released
1368696608083 - Pressed
1368696608112 - Released
1368696608113 - Pressed
1368696608143 - Released
1368696608144 - Pressed
1368696608173 - Released
//Inner Class
private class KeyDispatcher extends KeyAdapter implements ActionListener{
private BitSet keyBits = new BitSet(256);
private Timer timer = new Timer(20, this);
boolean player1Attack = false, player2Attack = false;
public KeyDispatcher(){
timer.start();
}
@Override
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
keyBits.set(keyCode);
}
@Override
public void keyReleased(KeyEvent e) {
int keyCode = e.getKeyCode();
keyBits.clear(keyCode);
if(player1Attack && !isKeyPressed(KeyEvent.VK_SPACE)){
controller.stopAttack(0);
player1Attack = false;
}
//player 2
...
}
public boolean isKeyPressed(final int keyCode) {
return keyBits.get(keyCode);
}
@Override
public void actionPerformed(ActionEvent e) {
if(isGameOver()){
timer.stop();
}else{
//player1
if(!player1Attack && isKeyPressed(KeyEvent.VK_RIGHT)){
controller.moveRight(0);
}
if(!player1Attack && isKeyPressed(KeyEvent.VK_UP)){
controller.moveUp(0);
}
if(!player1Attack && isKeyPressed(KeyEvent.VK_DOWN)){
controller.moveDown(0);
}
if(!player1Attack && isKeyPressed(KeyEvent.VK_LEFT)){
controller.moveLeft(0);
}
if(!player1Attack && isKeyPressed(KeyEvent.VK_NUMPAD0)){
controller.attack(0); player1Attack = true; update();
}
//player2
...
}
}
}
Action attack = new AbstractAction(){
@Override
public void actionPerformed(ActionEvent e) {
controller.attack(0);
}
};
Action stopAttack = new AbstractAction(){
@Override
public void actionPerformed(ActionEvent e) {
controller.stopAttack(0);
}
};
background.getInputMap().put(KeyStroke.getKeyStroke("SPACE"), "attack");
background.getActionMap().put("attack", attack);
background.getInputMap().put(KeyStroke.getKeyStroke("released SPACE"), "stopAttack");
background.getActionMap().put("stopAttack", stopAttack);
提前致谢
您应该尝试使用键绑定。
更多信息来自这里的文档
问题内容: 我在另一个问题(> 如何在Java中同时处理按键?)的注释部分提出了这个问题,并被要求提出一个新问题。 我的问题是,当用户按下按键时,当我创建按键列表ArrayList时,不会通过keyReleased事件足够快地将其删除。我希望运动与“ asdf”和北,东,南,西,东北…等保持一致。 这是我的两个事件的代码: 直到我通过lastKey(String)变量将第二个检查添加到那里,金字塔
本文向大家介绍python按键按住不放持续响应的实例代码,包括了python按键按住不放持续响应的实例代码的使用技巧和注意事项,需要的朋友参考一下 在学习飞机大战(我也不知道为什么都拿这个练手),飞机左右控制都是按键按一次移动一次,不能按住一个键后持续移动,离开后停止移动。 为了解决这个,查看了参考手册,说让用pygame.key.set_repeat() 方法,奈何我刚开始学也看不太明白,只能看
问题内容: 我一直在尝试找出如何 逐渐 加速按下键时的精灵,然后一旦释放键,就逐渐减速直至停止,就像 小行星上 的飞船一样。如果可能,我想在没有任何游戏引擎的情况下执行此操作。我搜索了所以这个时候,发现相关的问题,但他们并没有回答我的问题 恰好 在我看来。 到目前为止,我想到的是: 我只是不确定如何正确地编程,因为我只能想到以相同的值增加而在持有时不会逐渐加速的方法。 所以这是我的目标( 逐渐加快
所以最基本的,我想做的是使用LWJGL让我的球员在比赛中移动。玩家当前正在移动,但当你按住按钮时,他没有继续移动。 更新的代码: 我的代码仍然有同样的问题,我开始认为是Keyboard.next()阻止了我按住按钮,而播放器仍然在移动。
我试图使用Jackson注释来重新命名序列化过程中产生的一些json标签。所有注释都编译得很好,当我运行时,除了所有Jackson注释之外,Jackson序列化工作完全被忽略。即使像@jsonignore或@jsonproperty这样的基本命令对json响应也没有影响。构建路径中的库有: 下面是我需要序列化的一个类的代码示例:
有什么想法为什么@primary在这里没有被考虑在内吗?