语言: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;
}
}
答案 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)
才能存储先前的状态。