菜单索引onKey问题

时间:2016-02-02 23:52:53

标签: c# xna

语言:C#

描述: 所以目前我在XNA做一个小游戏。我正在为游戏创建一个菜单。我有3个菜单菜单状态。 1 =选项菜单,2 =开始菜单,3 =加载菜单。因此,目标是当用户按下" D"键菜单索引增量1和" A"键,菜单递减。这个问题是使用XNA中的KeyDown更新每个Tick。因此,当我递增/递减索引时,它会更新为快速的方式。我希望用户能够在没有快速闪烁的情况下切换菜单。以下是我的代码,请告诉我任何解决方案。

if(keyboard.IsKeyDown(Keys.D))
            {
                    LyEngine.Game.MENU_INDEX++;
                    if (LyEngine.Game.MENU_INDEX >= 3)
                    {
                        LyEngine.Game.MENU_INDEX = 1;
                    }

            }
            else if (keyboard.IsKeyDown(Keys.A))
            {
                LyEngine.Game.MENU_INDEX--;
                if (LyEngine.Game.MENU_INDEX <= 1)
                {
                    LyEngine.Game.MENU_INDEX = 3;
                }
            }

1 个答案:

答案 0 :(得分:1)

当一个键关闭时,你不需要改变菜单索引,而是需要捕获一个键上的一个键,然后键下一个键。

为此,请保存键状态的先前值并将其添加到您的条件中:

function update_item(item_num) {
    console.log(item_num) // sanity check
    $('.table_body').html('').load(
        "{% url 'update_items' %}?item_num=" + item_num
    ); // <--- this code instead of $.ajax(lala)

您必须创建字典if(keyboard.IsKeyDown(Keys.D) && !keyWasDown[Keys.D]) { // ... } keyWasDown[Keys.D] = keyboard.IsKeyDown(Keys.D) 才能存储先前的状态。