在JavaFX游戏中将节点对象用作游戏对象是否有效?

在JavaFX游戏中将节点对象用作游戏对象是否有效?,java,javafx,javafx-8,2d-games,Java,Javafx,Javafx 8,2d Games,我得到了这本书:华莱士·杰克逊的《开始Java 8游戏开发》 这本书的一部分教授如何使用节点对象(我使用ImageView类)作为游戏对象。我正在创建一个2D空间入侵者类型的游戏。 每个游戏对象都有一个包含精灵的ImageView成员,ImageView对象被添加到场景的根中。 有这么多节点(外星人)不会占用太多内存吗 我想知道的是,使用节点对象是有效的,还是有一种更有效的方式来表示这些游戏对象?如果你想在屏幕上显示一些东西,除了使用节点,你没有其他可能 来自节点of的句子的: 场景图节点的基类

我得到了这本书:华莱士·杰克逊的《开始Java 8游戏开发》

这本书的一部分教授如何使用节点对象(我使用ImageView类)作为游戏对象。我正在创建一个2D空间入侵者类型的游戏。 每个游戏对象都有一个包含精灵的ImageView成员,ImageView对象被添加到场景的根中。 有这么多节点(外星人)不会占用太多内存吗


我想知道的是,使用节点对象是有效的,还是有一种更有效的方式来表示这些游戏对象?

如果你想在屏幕上显示一些东西,除了使用
节点
,你没有其他可能

来自节点of的句子的:

场景图节点的基类。场景图是一组树数据 结构,其中每个项都有零个或一个父项,并且每个项都是 包含零个子项的“叶”或包含零或多个子项的“分支” 分项

根据@fabian的评论:

也可以使用
Canvas
,使用单个节点结构:


这是检验这种方法的一个很好的开始。

我觉得最初的答案非常迂腐。Fabian是对的,在JavaFX中渲染基本上有两种途径。一种是将节点添加到其他节点,将VBOX添加到组等。第二种是通过画布。一些游戏和其他与性能相关的应用程序尽可能避免节点和场景图。整个场景的速度问题有点争议


实际上要回答这个问题:不,在很多情况下,使用场景图和节点目前效率不高。最初的答案试图混淆,指出这些元素实际上都是节点。然而,这不是一个有用的答案。画布允许低级绘图操作,如渲染图像、基本体等。它提供混合模式和基于不透明度的操作。但是,要访问某些类型的文本格式、拍摄快照等,深入节点是很有用的。然后,如果纯粹使用画布将这些结果转换回图像

您的说法是正确的,但除此之外,还有其他方法可以替代每个游戏对象使用一个节点,例如
Canvas
,您的答案只是忽略了这一点……因此,我可以只使用节点作为游戏UI,而使用画布作为实际游戏级别吗?这可能很好,对吧?是的,你可以把图像放到画布上,因此你可以在游戏关卡上使用这个技巧,就像链接中的教程一样。有趣的是,如果您有一个使用ImageView的工作游戏,创建一个分支,重新实现它以使用Canvas,然后看到性能上的差异:)谢谢:)。当我使用Canvas时,我注意到性能有了一些改进。这也更容易,因为我在制作Swing游戏时习惯于使用图形对象进行渲染。我将为GUI保留节点。再次感谢!