在JavaFX游戏中将Node对象用作GameObjects是否有效?

时间:2016-05-15 10:30:50

标签: java javafx javafx-8 2d-games

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

本书的一部分教导如何使用Node对象(我使用ImageView类)作为GameObjects.I' m创建2D Space Invaders类型的游戏。 每个GameObject都有一个包含精灵的ImageView成员,ImageView对象被添加到Scene的根目录中。  不会有这么多节点(外星人)占用太多记忆?

我想知道的是,使用Node对象是有效的,还是有更有效的方式来表示这些GameObjects?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

如果您想在屏幕上显示某些内容,除了使用Node之外别无其他可能性。

来自节点的documentation的for句子:

  

场景图节点的基类。场景图是一组树数据   每个项目都有零个或一个父项的结构,每个项目都是   具有零子项的“叶子”或具有零或更多的“分支”   分项。

基于@fabian的评论:

使用Canvas

也可以使用单节点结构

This link可以是检查这种方法的良好开端。