在JavaFX中快速动画化大量图形元素的最佳方法

4
我正在学习JavaFX,希望使用JavaFX动画许多图形元素(椭圆,贝塞尔曲线,而非图片)。这些元素以每组大约10个元素的方式组织在一起,需要同时移动。我想要实现60fps并且移动成千上万的这些元素。
至少有四种方法可以做到这一点:
1.使用单个画布及其图形上下文直接在每帧绘制。
2.使用组和节点。每个元素都是一个节点。我喜欢这种方式,因为有很多类可用于轻松绘制我所需的内容,并且节点和组的逻辑结构正是我所需的。
3.每个组都是一个画布。在其构造函数中使用画布图形上下文绘制其元素,然后在每帧移动所有画布。
4.创建具有粘在一起的元素的图像,然后移动这些图像。我还没有找到如何完成此操作,但我认为这不难。元素可能会不时变化,因此我需要重新创建某些图像,但这只需要偶尔进行。
我的问题是,哪种方式(或其他方式)是最快的?特别是,使用许多节点和组是否会对性能产生高影响?
1个回答

5

我建议您从第二个选项开始,因为这似乎在逻辑上最符合您的需求。使用JavaFX也是最简单、最干净的方法。如果以后发现性能不够好,可以尝试使用缓存和适当的缓存提示来改善。例如,您可以通过这种方式优化代码的速度或质量。甚至可以动态地工作,因为您可以根据应用程序的状态切换这些缓存提示。如果您对一个组开启缓存,那么这基本上与将其绘制到画布或图像中具有相同的效果。


我不知道缓存提示。会尝试并报告。 - joanq
1
启用缓存并将cacheHints设置为speed后,我可以旋转2000多个重叠的组,并保持60 FPS的速率。不错 :) - joanq

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接