首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KeyFrame -动画

KeyFrame -动画
EN

Stack Overflow用户
提问于 2016-02-19 20:03:54
回答 1查看 447关注 0票数 0

我如何使用变量"t“,它在数学模式中包含在一个构造器参数中。"t“对应于使图表向右移动的时间。

代码语言:javascript
复制
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中这样做,就可以解决我的问题。但不能。

代码语言:javascript
复制
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)
                        );
}
EN

回答 1

Stack Overflow用户

发布于 2016-02-19 20:51:17

您可以在lambda表达式中访问的唯一局部变量是final或有效的最终变量。由于t是经过修改的(t+=0.05),因此它既不是最终版本,也不是有效的最终版本。

您需要做的就是将其值复制到最后一个变量:

代码语言:javascript
复制
while(t < 1) {
     t+=0.05;
     final double thisT = t ;
     chart = new Chart(x -> Math.exp(-(Math.pow((x-thisT ),2)))*Math.cos((2*Math.PI*(x-thisT))/l),
                        -1, 1, 0.01, new Axes(1000, 1000,
                                -1, 1, 0.1, -1, 1, 0.1)
                        );
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35504904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档