gpt4 book ai didi

java - drjava JFrame 帮助对象在 KeyEvent 按钮释放后不会继续移动

转载 作者:行者123 更新时间:2023-12-02 03:58:56 27 4
gpt4 key购买 nike

我试图让一个物体在释放空格键后继续向下移动。它最初开始向下移动,但在我按下并释放空格键后,该对象就保持在原位。在 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;
}


}

最佳答案

I can't seem to get the object to continue falling after the KeyEvent is released.

如果您希望动画在释放按键后继续发生,那么您需要使用 Swing Timer。当按下该键时,您将启动计时器,并且计时器将继续生成事件,直到您停止计时器为止。使用这种方法不需要处理已发布的事件。

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

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

阅读 Swing 教程中关于 Using Timers 的部分了解更多信息。

关于java - drjava JFrame 帮助对象在 KeyEvent 按钮释放后不会继续移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35109411/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com