【发布时间】:2014-07-19 15:56:18
【问题描述】:
我正在寻找一些关于组织应用程序的建议。
当你有一个包含内容选择的主菜单时,你按下一个按钮,获取控制器有 2 个选择: a) 更改当前显示主菜单的内容 b) 创建一个新场景并将舞台切换到那个场景
你在用什么?有什么最佳做法吗?
目前我更喜欢 a) 因为我可以保持链接状态栏之类的东西,但这是“干净”的方式吗?
【问题讨论】:
-
有趣的问题...我也有同样的疑问。
我正在寻找一些关于组织应用程序的建议。
当你有一个包含内容选择的主菜单时,你按下一个按钮,获取控制器有 2 个选择: a) 更改当前显示主菜单的内容 b) 创建一个新场景并将舞台切换到那个场景
你在用什么?有什么最佳做法吗?
目前我更喜欢 a) 因为我可以保持链接状态栏之类的东西,但这是“干净”的方式吗?
【问题讨论】:
首先有一些事情需要考虑:
1) 更改场景将取消链接您附加到它的事件处理程序,可能还有您提到的“状态栏”。
2) Java 是一种高度面向对象的语言,这也意味着在不同对象之间进行更改,并且在可能的情况下使用多态是一种很好的做法。
我的经验与事件处理程序有关,因为除了链接到特定节点(按钮)之外,它们通常链接到场景,但可能还有其他类似的概念需要考虑。在我做的一个项目中,我在菜单、暂停、播放和游戏显示之间进行了很多更改,但是由于我主要使用相同的键并且几乎不涉及鼠标,我意识到必须创建新的事件处理程序没有任何好处用于单独的 Scene 对象。相反,我使用Scene.setRoot(); 方法来更改活动显示节点/窗格。
但是,如果您的处理方式非常不同,例如从带有按钮和文本字段的菜单进入 FPS 游戏,其中每个输入都具有与菜单不同的效果,那么最好有在两个不同的场景对象中对事件处理程序进行不同的覆盖,而是使用Stage.setScene(); 方法,从而使处理程序行为多态*,而不是在处理程序中拥有另一组控制结构,以便 CPU 在您处理每一帧时处理不在菜单中。
*我知道,当我说多态时,我指的不是继承多态,但这是我能想到的描述避免额外运行时代码的最佳方式,以防您可能希望获得更好的性能。
【讨论】: