如何在Java应用程序中禁止在方法期间按键?

如何在Java应用程序中禁止在方法期间按键?,java,javafx,scenebuilder,Java,Javafx,Scenebuilder,我正在用JavaFX和scenebuilder制作一个应用程序。我有一个方法,使动画的锚窗格。平移过渡和旋转过渡 当我在键盘上按“1”时,该方法被调用 问题是,当我按下键1时,动画工作得很快 不对。似乎当我在动画的关键点上按得太快时 锚定窗格已移动 如何在动画期间禁止按键或如何设置按键之间的延迟? 控制器: @FXML private AnchorPane randomCard; @FXML public void initialize(URL location, ResourceBundl

我正在用JavaFX和scenebuilder制作一个应用程序。我有一个方法,使动画的锚窗格。平移过渡和旋转过渡

当我在键盘上按“1”时,该方法被调用

问题是,当我按下键1时,动画工作得很快 不对。似乎当我在动画的关键点上按得太快时 锚定窗格已移动

如何在动画期间禁止按键或如何设置按键之间的延迟?

控制器:

@FXML  private AnchorPane randomCard;

@FXML public void initialize(URL location, ResourceBundle resources) {    

//key commands
mainAnchor.setOnKeyPressed(event -> {
  switch (event.getCode()) {       
    case DIGIT1:          
      showRandomCard();
      break;
  }
});

//show random card in main window
 private void showRandomCard(){

    TranslateTransition tt = new TranslateTransition();
    tt.setDuration(Duration.millis(400));
    tt.setNode(randomCard);
    tt.setFromY(950);
    tt.setFromX(-600);
    tt.setToY(0);
    tt.setToX(0);        

    RotateTransition rt = new RotateTransition(Duration.millis(500), randomCard);
    rt.setByAngle(360);
    rt.setRate(1);
    rt.setCycleCount(1);        

    tt.play();       
    rt.play();

 }

只需使用
boolean
字段,并使用最后完成的动画的
onFinished
处理程序将其重置为允许执行创建/启动动画的逻辑的状态:

private boolean animationRunning = false;
private void showRandomCard(){
    if (!animationRunning) {
        animationRunning = true;
        TranslateTransition tt = new TranslateTransition();
        tt.setDuration(Duration.millis(400));
        tt.setNode(randomCard);
        tt.setFromY(950);
        tt.setFromX(-600);
        tt.setToY(0);
        tt.setToX(0);

        RotateTransition rt = new RotateTransition(Duration.millis(500), randomCard);
        rt.setByAngle(360);
        rt.setRate(1);
        rt.setCycleCount(1);
        rt.setOnFinished(evt -> animationRunning = false);

        tt.play();
        rt.play();
    }

}

塔克斯!它帮助了我!