java - 对用户按键事件使用react,无滞后 JavaFx

标签 java javafx

我想做的第一件事是为我的英语道歉,我会尽力写得尽可能容易理解。 另外,我已经尝试过寻找这个问题的解决方案,但直到现在我还没有找到..

代码中有问题的部分如下:

    //eventmanagement for the bat
    scene.setOnKeyPressed (new EventHandler <KeyEvent> () {
        public void moveBat(double speed) {
            if ((speed > 0) && ((bat.getLayoutX() + bat.getWidth())<scene.getWidth())){
                bat.setLayoutX(bat.getLayoutX() + speed);
            }
            if ((speed < 0) && ((bat.getLayoutX() > 0))){
                bat.setLayoutX(bat.getLayoutX() + speed);
            }
        };

        @Override
        public void handle(KeyEvent event){
            if (event.getCode().toString() == "RIGHT"){
                this.moveBat(batVelocity);          
        }
            if (event.getCode().toString() == "LEFT"){
                this.moveBat(-batVelocity);
        }
    }
    });

这个东西有效,但是如果我按下向左键,并且我不松开它,所以只要让它保持按下状态,那么“ bat ”就会向左移动一次,然后延迟大约1秒,然后继续向左移动。

我想在按住“LEFT”按钮的时间内向左方向连续移动。有人知道如何解决这个问题吗?

非常感谢您的宝贵时间和答复!!

克鲁兹

最佳答案

因此,OnKeyPressed 在第一次按下某个键时触发,然后每隔一秒左右触发一次。如果您希望某些事情连续发生,而不是在 OnKeyPressed 事件触发时发生,请考虑让 OnKeyPressedOnKeyReleased 控制某种 boolean keyIsPressed,并在某种 while 循环中使用它。因此,OnKeyPressed 将设置 keyIsPressed=true,而 OnKeyReleased 将执行相反的操作

关于java - 对用户按键事件使用react,无滞后 JavaFx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46795622/

相关文章:

JavaFX 组合框 : difference between methods of adding listeners/event handlers

java - ImageView 和自定义字体无法正确加载到应用程序中

java - 如何将动态 JVM 命令行标志传递给独立的 JavaFX 应用程序?

java - 如何在一个映射器中获得多个输出(k,v)?

java - Listview不显示数据,但显示要显示值的空白位置

java - 解压缩 zip 文件超过 100% 时的百分比计算!

JavaFX 警报不会在新窗口中打开,而是在新选项卡中打开

java - 仅按下第一个键时如何执行操作?

java - 为什么在类级别不允许泛型中的 super 关键字

Java 打包工具 : custom install location