我正在使用 JavaFX Canvas 对 Shape 和 Polyline 对象随时间的运动进行动画处理。 目前,每一帧都会根据需要编辑列表中每个形状或折线的 X 和 Y 位置,并移动对象。 这导致大约 20-30fps
我尝试过的早期方法只是清除每一帧的 Canvas 并再次重新绘制每个对象。不存储对象列表。 这导致 60fps
第二种方法似乎是一种更困惑的方法,但会产生更好的帧速率。
是否有在 JavaFX Canvas 上制作动画的最佳实践或推荐方法?有什么干净和推荐但能产生良好帧率的东西吗?
非常感谢
最佳答案
我刚刚在 JavaLand session 上就这些问题发表了演讲。确实,对于具有基于路径的形状(如折线和多边形)的一般动画,使用 Canvas 是目前最快的标准选项。这是由于 JavaFX 中的一个错误造成的,该错误可能会使通过场景图进行的此类动画变慢。我已报告此问题,并且正在修复错误。
https://bugs.openjdk.java.net/browse/JDK-8178521
在此 JIRA 问题中,我指的是硬件渲染与软件渲染,但它也会影响场景图与 Canvas 渲染,因为 Canvas 似乎不受此错误的影响。
关于JavaFX Canvas 高效动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43510822/