繁体   English   中英

释放KeyEvent按钮后,drjava JFrame帮助对象将不会继续移动

[英]drjava JFrame help object won't continue moving after KeyEvent button is released

释放空格键后,我试图使某个对象继续向下移动。 它最初开始向下移动,但是在我按下并释放空格键之后,该对象只是停留在原位。 释放KeyEvent后,似乎无法让对象继续下降。

public class htestnew extends JPanel implements ActionListener, KeyListener {
Timer t = new Timer(5, this);
int x = 20, y = 20, vely =1;


public htestnew() {
 t.start();
 addKeyListener(this);
 setFocusable(true);
 setFocusTraversalKeysEnabled(false);
}


public void actionPerformed(ActionEvent e) {

if(y < 0)
{
 vely=0;
 y = 0;  
}

if(y > 305) //-70
{
 vely=0;
 y = 305;  
}

y += vely;
repaint();
}

public void keyPressed(KeyEvent e) {
 int code = e.getKeyCode();

  if (code == KeyEvent.VK_SPACE){
  vely = -1;
  }

}


public void keyTyped(KeyEvent e) {}

public void keyReleased(KeyEvent e) {
 vely=0;
}


}

释放KeyEvent后,似乎无法让对象继续下降。

如果您希望动画在释放关键点后继续发生,则需要使用Swing计时器。 按下键后,将启动计时器,计时器将继续生成事件,直到您停止计时器为止。 使用此方法,无需处理释放的事件。

您可以将速度设置为-1并启动计时器。 然后,当对象到达底部时,您将停止计时器。

因此,基本上将ActionListener用作计时器的ActionListener。 您只需要添加代码即可停止计时器。 请注意,使用计时器时,ActionEvent的源对象是Timer,因此您可以从ActionEvent中获取对Timer的引用。

阅读Swing教程中有关使用计时器的部分,以获取更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM