【问题标题】:Xbox XNA Navigational logic for UI用于 UI 的 Xbox XNA 导航逻辑
【发布时间】: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,其中包含元素可以接受输入的“子状态”,但必须有更好的方法,不是吗?

我希望我解释得足够好,如果您需要更多信息,我很乐意提供。

【问题讨论】:

    标签: xna xbox360


    【解决方案1】:

    我建议在你的系统中使用某种标志,这样当你有一个弹出窗口时。它将所有其他元素标记为禁用。然后,当您关闭弹出窗口时,您将重新启用其他元素。您可以在将输入传递给元素时检查此标志,以便仅将其发送给启用的元素。

    【讨论】:

      【解决方案2】:

      我采用了额外的 Z-index 方法。 对某些元素使用不同的 Z-index 并捕获此输入就像一个魅力。 我还添加了一个标志:IndependentNavigation,它确保某些元素是 Z-index 独立的(例如,当打开下拉菜单时,可以单击不同的地方)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-11-09
        • 1970-01-01
        • 2023-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多