我想做的第一件事就是为我的英语道歉,我会尽量写得不太明白。
另外,我已经尝试搜索该问题的解决方案,但直到现在我都没有找到一个。

代码有问题的部分如下:

    //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);
        }
    }
    });


这件事是可行的,但是如果例如我按下向左键,而我没有按下它,那么只要让它保持按下状态,那么“蝙蝠”将向左移动一次,然后延迟约1秒钟,然后继续在左方向。

我想在保持按住LEFT按钮的同时向左连续运动。任何人都知道如何解决此问题?

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

克鲁兹

最佳答案

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

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

10-10 22:48