У меня есть следующий метод, вызванный в моем цикле обновления, чтобы проверить, нажата ли одна из двух кнопок.Порядок вызова методов - почему это важно в этом примере?
private void CheckInputs()
{
if (CheckButton(startNewGameButtonTexture, startNewGameButtonPosition))
{
//break 1 is here
}
if (CheckButton(continueCareerButtonTexture, continueCareerButtonPosition))
{
//break 2 is here
}
}
Кнопки просто прямоугольники, а если мышь находится над ними, и нажмите отпущена Checkbutton BOOL возвращает истинное:
public bool CheckButton(Texture2D texture, Vector2 vector)
{
MouseState CurrentMouseState = Mouse.GetState();
bool outcome;
if (CurrentMouseState.X > vector.X && CurrentMouseState.X < vector.X + texture.Width &&
CurrentMouseState.Y > vector.Y && CurrentMouseState.Y < vector.Y + texture.Height)
{
if (CurrentMouseState.LeftButton == ButtonState.Released && PreviousMouseState == ButtonState.Pressed)
{
outcome = true;
}
else
{
outcome = false;
}
}
else
{
outcome = false;
}
PreviousMouseState = CurrentMouseState.LeftButton;
return outcome;
}
В текущем порядке, startNewGameButton работает (то есть отладочные остановки при разрыве 1), но continueCareerButton не работает (нажатие на кнопку не вызывает перерыв 2).
Но если изменить порядок проверки этого:
private void CheckInputs()
{
if (CheckButton(continueCareerButtonTexture, continueCareerButtonPosition))
{
//break 2 is here
}
if (CheckButton(startNewGameButtonTexture, startNewGameButtonPosition))
{
//break 1 is here
}
}
continueCareerButton теперь работает (перерыв 2), но startNewGameButton в настоящее время не (перерыв 1).
Я думаю, что состояния мыши не должны работать должным образом, но я не могу понять, почему.
Doh! Спасибо 15char – user2056166
No problemo :) Я сделал это сам в прошлом ..: \ –