【发布时间】:2016-01-16 05:38:28
【问题描述】:
我正在构建一个 JavaFX 应用程序,它应该在我的 RaspberryPi 上运行,该树莓派连接了一个 7" 显示器。
为了更好的造型,我正在尝试为javafx.scene.effect.GaussianBlur-Effect 制作动画。
我让它“工作”了,尽管目前性能很差(动画期间的 FPS 低)(在我的笔记本电脑上,甚至不说 Pi)。请参阅下面的代码。
有没有更高效的方法来做到这一点?还是这些效果不应该是动画的?
GaussianBlur blur = new GaussianBlur(0);
backgroundPane.setEffect(blur);
DoubleProperty value = new SimpleDoubleProperty(0);
value.addListener((observable, oldV, newV)->
{
blur.setRadius(newV.doubleValue());
});
Timeline timeline = new Timeline();
final KeyValue kv = new KeyValue(value, 30);
final KeyFrame kf = new KeyFrame(Duration.millis(200), kv);
timeline.getKeyFrames().add(kf);
timeline.play();
仅供参考:在这个阶段,bakcgroundPlane 只是一个通过 CSS 添加背景图像的窗格:
.background
{
-fx-background-image: url("images/bg.png");
-fx-background-repeat: stretch;
-fx-background-size: 800 480;
-fx-background-position: center center;
}
编辑: 问题似乎与 CSS 无关。当我在 FXML 中设置图像时,它仍然会发生......
【问题讨论】:
-
是否有任何具体原因定义 DoubleProperty 与您动画的 changeListener 以强制更改半径?直接在 GaussianBlur 上使用 radiusProperty。
-
如果您提供mcve,您将有更好的机会获得帮助。我知道您当前的问题有足够的信息,有人可以复制它,但目前有人这样做比将最小的、完整的、工作的、可编译的代码复制并粘贴到他们的机器上做的工作更多。如果潜在的回答者需要做更多的工作来复制您的问题,那么您获得好的答案的机会就会减少。