Ich habe ein Problem mit der Logik dieses Codes, XNAs Update-Methode ist zu schnell, also wenn ich versuche, den Wert um 1 jedes Mal, wenn die Ab-Taste auf der Tastatur gedrückt wird, endet es update ein mehr als nur um 1XNA-Menü funktioniert nicht
einen Blick auf den Code und sehen, ob Sie einen besseren Weg denken kann, es zu tun,
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;
}
, dass das Update-Methode war und dies ist der Draw-Methode
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;
}
Ich bin t einen anderen Weg zu tun, aber es würde bedeuten, dass ich den ganzen Code ändern müsste, also sieh es dir an und sieh nach, ob du einen besseren Weg dazu hast
Danke und Grüße, ..... :)