Dobrý den, rozhodl jsem se že si naprogramuju stopky. Aby to pěkně vypdalo rozhodl jsem se to udělat v XNA, aby jsem mohl vykreslovat hodiny s pohybujícími se ručičkami. Ale s hrůzou jsem zjistil, že když jsem měřil na normálních hodinách minutu tak v xna mi to ukazovalo 50 sekund cože je 10 sekund za minutu rozdíl. Absolutně nechápu jak je to možné, čas vy GameTime by měl být přeci přesný nebo ne ? Ale očividně tomu tak není, proto bych se chtěl zeptat jestli nenajdete nějakou chybu v níži přiloženém kódu nebo nenavrhly jinou přesnou alternativu pro měření času v XNA. první možnost
private void StopWatchForm_OnUpdate(object sender, UpdateEventArgs e)
{
KeyboardState keyboard = Keyboard.GetState();
MouseState mouse = Mouse.GetState();
if (IsCount)
{
time += (float)e.GameTime.ElapsedGameTime.Milliseconds;
titleLabel.Text = time.ToString();
}
if (keyboard.IsKeyDown(Keys.Space) && previousKeyboard.IsKeyUp(Keys.Space))
{
IsCount = true;
time = 0;
}
else if (mouse.RightButton == ButtonState.Pressed && previousMouse.RightButton == ButtonState.Released)
{
IsCount = false;
}
previousKeyboard = keyboard;
previousMouse = mouse;
}
druhá možnost
private void StopWatchForm_OnUpdate(object sender, UpdateEventArgs e)
{
KeyboardState keyboard = Keyboard.GetState();
MouseState mouse = Mouse.GetState();
if (IsCount)
{
titleLabel.Text = ((float)e.GameTime.TotalGameTime.TotalSeconds - time).ToString();
}
if (keyboard.IsKeyDown(Keys.Space) && previousKeyboard.IsKeyUp(Keys.Space))
{
IsCount = true;
time = 0;
time = (float)e.GameTime.TotalGameTime.TotalSeconds;
}
else if (mouse.RightButton == ButtonState.Pressed && previousMouse.RightButton == ButtonState.Released)
{
IsCount = false;
}
previousKeyboard = keyboard;
previousMouse = mouse;
}
Časový rozdíl není pokaždé stejný někdy to je třeba 13 jindy zase 8 atd... předem děkuji za odpovědi
|