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代码。它通过传递KeyFrame
和Duration
来创建EventListener
- 不多也不少。
与Timeline
相关联的EventHandler
类的所有构造函数都需要KeyValues
作为参数。但是,在上面的代码中并非如此。代码编译甚至提供所需的输出。
为什么?
文档:http://docs.oracle.com/javafx/2/api/javafx/animation/KeyFrame.html
答案 0 :(得分:3)
您正在使用的构造函数是
public KeyFrame(Duration time,
EventHandler<ActionEvent> onFinished,
KeyValue... values)
参数KeyValue...
是 varargs参数。如果你没有向方法传递任何参数,那么它将是一个空数组。