[英]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.