Timeline pongAnimation = TimelineBuilder.create()
    .keyFrames(
      new KeyFrame(
        new Duration(10.0),
        new EventHandler<ActionEvent>() {
          public void handle(javafx.event.ActionEvent t) {
            checkForCollision();
            int horzPixels = movingRight ? 1 : -1;
            int vertPixels = movingDown ? 1 : -1;
            centerX.setValue(centerX.getValue() + horzPixels);
            centerY.setValue(centerY.getValue() + vertPixels);
          }
        }
      )
    )
    .cycleCount(Timeline.INDEFINITE)
    .build();


这是我正在阅读的书中的JavaFX代码。它通过传递KeyFrameDuration来创建EventListener-不多也不少。

Timeline关联的所有EventHandler类的构造函数都需要KeyValues作为参数。但是,在上面的代码中情况并非如此。该代码编译,甚至给出所需的输出。

为什么?

文件:http://docs.oracle.com/javafx/2/api/javafx/animation/KeyFrame.html

最佳答案

您正在使用的构造函数是

public KeyFrame(Duration time,
        EventHandler<ActionEvent> onFinished,
        KeyValue... values)


参数KeyValue...是varargs参数。如果您不向该方法传递任何参数,则它将是一个空数组。

07-26 03:02