【发布时间】:2012-03-03 17:18:23
【问题描述】:
我正在使用 XNA 为 XBox 开发一个应用程序,并带有一个定制的 UI 框架。 为此我开发了一个导航系统,导航系统的工作原理如下:
系统存在页面,每个页面都包含子UI元素,子UI元素都有 我称之为一个或多个 PageTab。
页面标签是对象,有 2 个属性,X 和 Y。 (我知道我可以使用 Point,但 pagetab 类也有一些方法)
基于系统的当前状态,我检查输入,并在具有正确页面选项卡的元素上引发事件。 所以我有这个数组: 页[]{ 开始, 出口, 设置, ...}
然后,我为我的状态使用一个枚举,例如开始,并像这样访问页面可导航元素:
pages[开始].Navigatables[]
这是一个包含页面所有页面标签的数组。当你下降时,Y 会增加,反之亦然。 X也一样
这很好用,它记住了最大和最小 Y&X 值,所以总是会选择一些东西。
但是,这个系统有一个主要缺陷,它只能为 1 个状态框输入。 但是比如说我在起始页上, 所以我的状态是开始,我有一个弹出窗口,有 2 个按钮,页面选项卡: (1,1) & (2,1)
当前设计的系统将使用选定的页面选项卡查找当前状态下的所有元素,但我需要这样做,以便如果弹出窗口可见,则只有弹出窗口接受导航,其他一切都不会t 对用户输入做出反应(游戏手柄)。
我正在考虑向 PageTab 类添加一个额外的 List,其中包含元素可以接受输入的“子状态”,但必须有更好的方法,不是吗?
我希望我解释得足够好,如果您需要更多信息,我很乐意提供。
【问题讨论】: