我得到了这本书:华莱士杰克逊开始Java 8游戏开发。
本书的一部分教导如何使用Node对象(我使用ImageView类)作为GameObjects.I' m创建2D Space Invaders类型的游戏。 每个GameObject都有一个包含精灵的ImageView成员,ImageView对象被添加到Scene的根目录中。 不会有这么多节点(外星人)占用太多记忆?
我想知道的是,使用Node对象是有效的,还是有更有效的方式来表示这些GameObjects?
答案 0 :(得分:1)
我觉得原来的答案是非常迂腐的。 Fabian是对的,在JavaFX中基本上有两种渲染路径。一个是将节点添加到其他节点,将VBox添加到组等。第二个是通过画布。一些游戏和其他与性能相关的应用程序尽可能地避免节点和场景图。场景图的速度的整个问题有点引起争议。
并实际回答这个问题:不,在许多情况下,使用场景图和节点目前效率不高。原始答案试图通过声明这些元素实际上是所有节点来混淆。但是,这不是一个有用的答案。画布允许低级绘制操作,如渲染图像,基元等。它提供混合模式和基于不透明度的操作。但是,要访问某些类型的文本格式,拍摄快照等,深入了解节点是很有用的。然后,如果您纯粹使用画布将这些结果转换回图像。
答案 1 :(得分:0)
如果您想在屏幕上显示某些内容,除了使用Node
之外别无其他可能性。
来自节点的documentation的for句子:
场景图节点的基类。场景图是一组树数据 每个项目都有零个或一个父项的结构,每个项目都是 具有零子项的“叶子”或具有零或更多的“分支” 分项。
基于@fabian的评论:
使用Canvas
:
This link可以是检查这种方法的良好开端。