2

我正在开发一个关于 JavaFX 的个人项目(这是一个游戏),我有一个问题想采纳你的建议。如您所知,JavaFX 可以解析 .fxml 文件中的数据。因此,我的主地图(从 .jpeg 文件转换为 .svg 文件)是从 fxml 文件构建的,每个国家/地区都转换为具有相同属性的 SVGPath,Node因此Shape我必须为每个国家/地区使用 MouseListener 插入一些效果. 此外,有两种方法可以实现这些效果,它们是

  • 我可以使用 FXML-CSS (就像hover每个国家的属性(换句话说,每个Nodeor Shape
  • 我可以使用 MouseListeners 在 JavaFX 中实现效果,而不是使用 CSS。

我的问题是哪一个更有效和可靠。或者如果我同时使用它们会不会有同步问题?

我希望我的问题很清楚,我会感谢每一个答案。不管怎么说,还是要谢谢你

4

1 回答 1

3

虽然使用 css 或使用等效的 java 代码 api 之间会有性能差异,但对于您概述的情况(实现鼠标侦听器与悬停 css 伪类),性能差异将无关紧要。

您确实提到了效果,但并没有真正说明您正在使用什么效果。JavaFX 2 仅通过 css(阴影和内阴影)具有有限的效果能力,因此对于该版本,无论如何您都需要在代码中应用大多数效果。无论如何,在代码中应用效果与在 css 中应用效果之间不应该有任何真正的性能差异。

您可以在效果使用方面获得的主要性能提升是通过适当地设置 JavaFX 节点缓存cacheHint属性,以便 JavaFX 系统预先计算效果并缓存其结果,而不是在场景动画时一直重新计算它。在 JavaFX 2.2 中,cachecacheHint属性的设置只能从代码(或在您的 fxml 标记中)完成,而不能从 css 完成。


对于一些一般背景信息,以下相关问题可能有用:

于 2013-03-13T21:47:56.980 回答