我正在用 JavaFX 编写一个简单的平台游戏。由于我必须使用 Platform.runLater()
(用于添加/删除节点),我知道在具有大量对象的大型阶段的情况下可能存在性能问题 -> 更多 runLater()
每秒调用。
什么是最好的性能:将要在 JavaFX 线程中完成的操作分组到一个 Platform.runLater()
在一次迭代中多次调用或调用它?它对性能和 UI 响应能力有多大影响?
例如,如果我在屏幕上有 20 个字符,它们以 2 发/秒的速度发射子弹。这将产生 40 次添加节点的调用,40 次删除节点的调用(击中表面的子弹将消失)以及一些其他效果的调用。我如何定义哪种解决方案更好:
1.调用runLater()
每秒 100 次。
2. 每帧分组 Action (比如 30 fps)并调用 runLater()
每秒30次。
3. 选择其他解决方案。我正在考虑“节点池”,它将容纳一些在舞台上但不可见的节点。这将最小化 runLater()
的数量调用到最低。
最佳答案
我不是 100% 肯定,但每个人都说“JavaFx 2 可以独立处理它的线程”......
我从来没有做过一个足够大的程序来测试它,但我很确定 JavaFx 2 可以创建和删除(应用程序)线程,如果它需要更多/更少。
关于performance - JavaFX runlater 规范和性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17337130/