Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于使用JavaFX或CSS实现效果的效率_Java_Css_Performance_Javafx 2_Fxml - Fatal编程技术网

关于使用JavaFX或CSS实现效果的效率

关于使用JavaFX或CSS实现效果的效率,java,css,performance,javafx-2,fxml,Java,Css,Performance,Javafx 2,Fxml,我正在JavaFX上做一个个人项目(这是一个游戏),我有一个问题想听听你的建议。正如您所知,JavaFX可以解析.fxml文件中的数据。因此,我的主地图(从.jpeg文件转换为.svg文件)是从fxml文件构建的,每个国家都转换为SVGPath,它与节点或形状具有相同的属性,因此我必须为每个国家使用MouseListener来插入一些效果。此外,有两种方法可以实现这些效果,分别是 我可以为每个国家/地区使用FXML-CSS(比如hover属性(换句话说,每个节点或形状) 我可以在JavaFX中

我正在JavaFX上做一个个人项目(这是一个游戏),我有一个问题想听听你的建议。正如您所知,JavaFX可以解析.fxml文件中的数据。因此,我的主地图(从.jpeg文件转换为.svg文件)是从fxml文件构建的,每个国家都转换为SVGPath,它与
节点
形状
具有相同的属性,因此我必须为每个国家使用MouseListener来插入一些效果。此外,有两种方法可以实现这些效果,分别是

  • 我可以为每个国家/地区使用FXML-CSS(比如
    hover
    属性(换句话说,每个
    节点
    形状
  • 我可以在JavaFX中使用MouseListener实现效果,而不是使用CSS
我的问题是哪一个更有效、更可靠。或者如果我同时使用这两个选项,会不会出现同步问题


我希望我的问题很清楚,我会感谢你的每一个回答。无论如何,谢谢你。虽然使用css或使用等效的java代码API之间会有性能差异,但对于你描述的情况(实现鼠标侦听器与悬停css伪类),性能差异将是无关紧要的

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

与效果使用相关的主要性能优势是通过适当设置JavaFX节点和属性,以便JavaFX系统预先计算效果并缓存其结果,而不是在场景设置动画时一直重新计算效果。在JavaFX 2.2中,设置
缓存
缓存提示
p只能从代码(或在fxml标记中)创建属性,而不能从css创建属性


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


事实上,我只会处理一些简单的效果,如innershadow、highlight(当然,如果我提高了自己,我可能会使用更复杂的效果)。另一方面,谢谢你非常有用的回答!:)