JavaFX Canvas 高效动画

标签 java animation canvas javafx

我正在使用 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/

相关文章:

java - 重写Executor的execute方法

java - 我可以使用 Intellij J IDEA 进行 Android 应用程序开发吗?

javascript - CSS、JavaScript、HTML,如何将 div 内的文本与图像旁边的中间对齐?并为文字添加动画

java - 老虎机时间线动画不起作用

Android ViewFlipper动画(ViewPage)

Javascript - 将图像绘制到 Canvas 时加载 GIF 卡住(Phonegap/Cordova)

Java:将字节转换为整数

java - status.setComplete() 不清除 session

javascript - RaphaelJS 到 SVG 到

javascript - 不稳定的 jQuery 可拖动行为