Animation 为什么OnFinished Eventhandler正在连续调用?

Animation 为什么OnFinished Eventhandler正在连续调用?,animation,javafx,javafx-8,Animation,Javafx,Javafx 8,我是JavaFX新手,对此代码有问题 pongAnimation = new Timeline( new KeyFrame(new Duration(1.0), t -> { checkForCollision(); }) ); pongAnimation.setCycleCount(Timeline.INDEFINITE); 为什么Eventhandler t -> { checkForCollision(); } 动画结束后

我是JavaFX新手,对此代码有问题

  pongAnimation = new Timeline(
    new KeyFrame(new Duration(1.0), t -> {
         checkForCollision();
      })
  );
  pongAnimation.setCycleCount(Timeline.INDEFINITE);
为什么Eventhandler

 t -> { checkForCollision(); }
动画结束后再开始

我们没有密码

   pongAnimation.setOnFinished( t -> {
         checkForCollision();)
在我的工作手册中,它说

当关键帧具有动作事件处理程序时,该关键帧中的代码 在本例中再次是lambda表达式的处理程序是 达到该关键帧的时间时执行

我的问题是,当关键帧具有动作事件处理程序时,为什么它会再次启动事件

为什么Eventhandler在动画结束后启动

因为您将动画设置为无限重复

pongAnimation.setCycleCount(Timeline.INDEFINITE);
如果你想让它只播放一次,那就做吧

pongAnimation.setCycleCount(1);

你说的是哪部动画片?您可以添加一个复制您的问题的方法吗?使用此代码,
checkForCollision()
方法将每毫秒调用一次。实际上,
checkForCollision()
将在一个脉冲中调用一次,因为时间线是由JavaFX的动画子系统设置的,JavaFX的动画子系统触发的频率不会超过一次脉冲。通常一个脉冲每秒会出现60次。我的问题是,为什么每毫秒调用一次checkForCollision()。我们没有类似于xyz.setonfinished(…)的东西@是的,说得好。