当前位置: 首页 > 知识库问答 >
问题:

将GridPane包装在ScrollPane中或以编程方式修改它。最有效的方法?

艾志尚
2023-03-14

在一个游戏中,我有一个网格窗格,以方形单元格显示世界的瓷砖。播放器可以使用键盘移动列\行显示的内容。我想到的方法是:通过在播放器输入上移动x步,使网格窗格以编程方式改变显示的瓷砖。将GridPane包装在ScrollPane中,并将ScrollPane的滚动与键盘输入绑定。

我的问题是,假设总是装载视线之外但在同一地图上的东西,从效率上看,每种方法的利弊是什么?最具体地说,我想知道,如果将GridPane包装在ScrollPane中,即使图像在屏幕外,也会保持加载,从而影响性能,如果在这种情况下,在需要时重新加载它们会更好。我还想知道是否还有第三种更有效的方法我没有想过。

共有1个答案

毋胜涝
2023-03-14

一般方法

为一个非常大的世界提供一个有限的视口的最有效的方法是为世界使用一个基于平铺的模型,并且只加载当前视口所需的图形资源和显示平铺。

基于画布的示例实现

请注意,对于Tile map格式(如TMX)有现有的规范,并且现有的编辑器可以创建符合这些格式的文件。tilemap的使用适用于实时和基于回合的游戏,甚至可能在游戏类型之外有用,尽管它的传统用法是在创建视频游戏中。

附加问题的答案

您介意详细说明一下,即使只是稍微说明一下GridView没有优化的意思吗?

有时做研究是有好处的,有时你会从错误中吸取教训:-)我相信约翰·卡马克如果当时知道他现在知道的事情,他会以不同的方式写下最初的厄运。我不会让这些事情让你太担心。只要评估一下你现在的处境,然后从那里开始。

 类似资料:
  • 我一直在为我和一些朋友开发一个小型聊天客户端,同时自学Java和JFX8。不幸的是,由于某些原因,我无法以编程方式滚动到滚动窗格的底部,那里有聊天消息。 我有一个简单地称为scrollToBottom()的方法,它执行以下代码: 下面是应用程序中唯一真正相关的类--ChatBox类型只是VBox的扩展,它只使用扩展类型的文本。 如果您有任何其他一般性建议(我现在正在学习Java),欢迎所有提示。:

  • 大家好! 我有一个简单的问题:我正在使用FXML文件,我已经做了这样的布局: 使用此层次结构:(顶部GridPane控制器被高亮显示-它位于VBox中) 我的问题是,我在ScrollPane(在另一个GridPane容器内)内动态地向GridPane添加行;我不能添加超过3列(显然是Vbox容器的大小),但是如果我删除滚动窗格,我可以添加尽可能多的行但是行正在消失,因为它们在Vbox/GridPa

  • 问题内容: 我有一个元素,其样式必须根据计算进行修改。 CSS代码: 要求是能够通过ReactJS 和通过ReactJS 更新transform属性。 如果有一种方法可以不更新类,也可以完全不使用CSS ,则也建议这样做。 问题答案: 您可以重复设置的地方比赛伪选择

  • 我正在以编程方式运行Mwe2工作流,为了成功运行此工作流,我需要将Terminals.xtext的referencedResource添加到GenerateYourdsl.Mwe2文件中。提到的GenerateYourdsl.mwe2文件是在我创建新项目时由Xtext生成的--我没有修改它。是否有可能从这个工作流中获取对象,用Java访问它,并将这个属性添加到工作流组件属性的语言属性中? 以下是工

  • 我使用下面的hack以编程方式更改homeAsupIndicator。 但这在大多数新手机(HTC One、Galaxy S3等)上都不起作用。是否有一种方法可以跨设备统一更改。我只需要在主屏幕上更改它。其他屏幕将具有默认屏幕。因此无法使用样式。xml

  • 问题内容: 有什么办法以编程方式最小化JInternalFrame? 问题答案: “图标化或取消图标化此内部框架…”