KeyFrame - 动画

时间:2016-02-19 12:03:54

标签: java animation javafx keyframe

如何使用其中一个contructor参数中包含的数学模式中的变量“t”。 “t”对应于使图表向右移动的时间。

public void update(final Scene scene) {

  final Group root = (Group) scene.getRoot(); 
  final Chart chart = new Chart(x -> Math.exp(-(Math.pow((x-t ), 2)))
                                     * Math.cos((2*Math.PI*(x-t))/l),
                                    -1, 1, 0.01,
                                    new Axes(1000, 1000, -1, 1, 0.1, -1, 1, 0.1)
                      );

  root.getChildren().add(chart);
  Timeline timeLine = new Timeline(Timeline.INDEFINITE, 
                                  new KeyFrame(new Duration(1000),
                                  x -> {}));    
  timeLine.setAutoReverse(true);
  timeLine.play();             
}

如果我可以在KeyFrame内执行此操作,则可以解决我的问题。但不能。

while(t < 1) {
     t+=0.05;
     chart = new Chart(x -> Math.exp(-(Math.pow((x-t ),2)))*Math.cos((2*Math.PI*(x-t))/l),
                        -1, 1, 0.01, new Axes(1000, 1000,
                                -1, 1, 0.1, -1, 1, 0.1)
                        );
}

1 个答案:

答案 0 :(得分:0)

您可以在lambda表达式中访问的唯一局部变量是window2或有效的最终变量。自final被修改(t)以来,它既不是最终的,也不是最终的。

您只需将其值复制到最终变量:

t+=0.05