【发布时间】:2015-10-14 20:11:28
【问题描述】:
我是 JavaFX 新手,对此代码有疑问
pongAnimation = new Timeline(
new KeyFrame(new Duration(1.0), t -> {
checkForCollision();
})
);
pongAnimation.setCycleCount(Timeline.INDEFINITE);
为什么要使用事件处理程序
t -> { checkForCollision(); }
在动画结束后开始?
我们没有代码
pongAnimation.setOnFinished( t -> {
checkForCollision();)
在我的工作簿中,它说
当 KeyFrame 具有动作事件处理程序时,其中的代码 处理程序——在这种情况下又是一个 lambda 表达式——是 当达到该关键帧的时间时执行。
我的问题是,当 KeyFrame 有一个 action 事件处理程序时,为什么它会再次启动事件?
【问题讨论】:
-
你说的是哪个动画?你能添加一个MCVE 来复制你的问题吗?
-
使用此代码,
checkForCollision()方法将每毫秒调用一次。 -
实际上,
checkForCollision()将在一个脉冲中调用一次,因为时间线是关闭 JavaFX 的动画子系统的,它不会比一个脉冲更频繁地触发一次。通常一个脉冲每秒会出现 60 次。 -
我的问题是,为什么 checkForCollision() 会每毫秒调用一次。我们没有类似 xyz.setonfinished(..);
-
@jewelsea 是的,很好。