我有這個代碼的邏輯問題,XNA的更新方法是快速的,所以當我試圖每次在鍵盤上按下按鈕時將值加1時,它最終更新不僅僅是由1XNA菜單不工作
看一看代碼,看看,如果你能想到的一個更好的辦法來做到這一點更,
public void Update(GameTime gameTime)
{
var now = Keyboard.GetState();
KeyboardState old = Keyboard.GetState();
if (now.IsKeyDown(Keys.Down) && !old.IsKeyUp(Keys.Down))
{
properties.Menuposition++;
}
else if (now.IsKeyDown(Keys.Up) && !old.IsKeyUp(Keys.Up))
{
properties.Menuposition--;
}
else if (now.IsKeyDown(Keys.Enter))
{
properties.Menuposition = 5;
}
old = now;
}
這是更新的方法,這是Draw方法
public void Draw(GameTime gametime, SpriteBatch spriteBatch)
{
if(properties.Menuposition == 0)
{
spriteBatch.DrawString(properties.Font, properties.Menu[0], properties.Playpos, Color.White);
spriteBatch.DrawString(properties.Font, properties.Menu[1], properties.Highscorepos, Color.White);
spriteBatch.DrawString(properties.Font, properties.Menu[2], properties.Exitpos, Color.White);
}
int menueitem = 0;
Vector2 play = new Vector2(320,117);
Vector2 highscore = new Vector2(320, 151);
Vector2 Exit = new Vector2(320,180);
spriteBatch.DrawString(properties.Font, properties.Menuposition.ToString(),new Vector2(100,100),Color.White);
if(properties.Menuposition == 1)
{
spriteBatch.DrawString(properties.Font, properties.Menu[0], play, Color.Yellow);
spriteBatch.DrawString(properties.Font, properties.Menu[1], highscore, Color.White);
spriteBatch.DrawString(properties.Font, properties.Menu[2], Exit, Color.White);
numberoftime = true;
menueitem = 1;
}
else if(properties.Menuposition == 2)
{
spriteBatch.DrawString(properties.Font, properties.Menu[0], play, Color.White);
spriteBatch.DrawString(properties.Font, properties.Menu[1], highscore, Color.Yellow);
spriteBatch.DrawString(properties.Font, properties.Menu[2], Exit, Color.White);
numberoftime = true;
menueitem = 2;
}
else if(properties.Menuposition == 3)
{
spriteBatch.DrawString(properties.Font, properties.Menu[0], play, Color.White);
spriteBatch.DrawString(properties.Font, properties.Menu[1], highscore, Color.White);
spriteBatch.DrawString(properties.Font, properties.Menu[2], Exit, Color.Yellow);
numberoftime = true;
menueitem = 3;
}
我是t hinking另一種方式來做到這一點,但這意味着我將不得不改變所有的代碼,所以看看它,看看你是否有更好的方式做到這一點
感謝和問候, ..... :)