JavaFX Canvas高效动画

时间:2017-04-20 05:20:59

标签: java animation canvas javafx

我正在使用JavaFX Canvas,随着时间的推移动画化Shape和Polyline对象的运动。 目前,每个帧,列表中每个形状或折线的X和Y的位置都根据需要进行编辑,并移动对象。 这导致约20-30fps

我尝试过的早期方法只是每帧清除画布并再次重绘每个对象。不存储任何对象列表。 这导致60fps

第二种方法似乎是一种更加混乱的方法,但却能提供更好的帧率。

是否有在JavaFX画布上制作动画的最佳做法或推荐方法?任何干净和推荐的东西都会产生良好的帧率?

非常感谢

1 个答案:

答案 0 :(得分:2)

我刚刚在JavaLand会议上讨论了这些问题。确实如此,对于使用Canvas的基于路径的形状(如Polyline和Polygon)的一般动画,目前是最快的标准选项。这是由于JavaFX中的一个错误,它可以通过场景图缓慢地制作这样的动画。我已经报告了这个问题,并且正在修复错误。

https://bugs.openjdk.java.net/browse/JDK-8178521

在这个JIRA问题中,我指的是硬件与软件渲染,但它也会影响场景图与画布渲染,因为画布似乎不受此错误的影响。