我正在尝试创建一个简单的动画,在 JavaFX 2.x 中将圆向左移动一个像素,该动画有效,但每当我尝试第二次启动时,它就不再起作用了。我尝试了几种方法,代码如下:
public void handle(KeyEvent t) {
if (t.getCode() == KeyCode.LEFT) {
final KeyValue kv = new KeyValue(testPuck.translateXProperty(), -1);
final KeyFrame kf = new KeyFrame(Duration.millis(50), kv);
timeLineToLeft.getKeyFrames().add(kf);
timeLineToLeft.play();
}
}
我尝试检查时间线是否不等于 null,然后删除关键帧/键值并再次添加它们。但这也没有帮助。 关于这个问题有什么帮助吗?关于这个主题的文档似乎很少。 提前致谢。
最佳答案
您的动画只有一个 KeyFrame
- 最后一个,testPuck
位于 -1 点。
因此,在第二次调用后,您添加新的 KeyFrame
,将冰球从点 -1 移动到点 -1,但什么也没有发生。
下一步尝试:
注意,我每次都会重新创建Timeline
,没有理由保留它:
public void handle(KeyEvent t) {
if (t.getCode() == KeyCode.LEFT) {
Timeline timeLineToLeft = new Timeline();
final KeyValue kv = new KeyValue(testPuck.translateXProperty(),
testPuck.getTranslateX() -1); // note we calculate new value every time
final KeyFrame kf = new KeyFrame(Duration.millis(50), kv);
timeLineToLeft.getKeyFrames().add(kf);
timeLineToLeft.play();
}
如果你确实想重用Timeline
对象,请先清除它:
timeLineToLeft.getKeyFrames().clear();
//...
timeLineToLeft.playFromStart();
关于java - 回收 JavaFX 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12979941/