java - 回收 JavaFX 动画

标签 java javafx-2

我正在尝试创建一个简单的动画,在 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/

相关文章:

JavaFX Web View : how do I change the default cursor?

java - 访问对象内的 JSON 数组节点

java - 可以将多个 fxml 包含到同一个 fxml 中吗

JavaFX (2.2) 将字符串从内存加载到 WebView 中

java - 如何使用 javafx 在应用程序启动时运行多个不同阶段之一?

java - Spring 和 Guice 一起,或者只是 Spring

java - 具有移动应用程序身份验证的 RESTful Web 服务

java - MinGW shell 未找到 MinGW gcj 编译器

java - 如何确定选择了哪个FileChooser ExtensionFilter - javafx

javafx-2 - 如何使JavaFX TableView单元格可编辑?