В XNA вы можете использовать Класс мыши для запроса пользовательского ввода.
Самый простой способ сделать это - проверить состояние мыши для каждого кадра и отреагировать соответствующим образом.Находится ли положение мыши внутри определенной области?Отобразить другой курсор.Правая кнопка нажата во время этого кадра?Показать меню.и т.д.
var mouseState = Mouse.GetState();
Получить положение мыши в координатах экрана (относительно верхнего левого угла):
var mousePosition = new Point(mouseState.X, mouseState.Y);
Изменить текстуру, когда мышь находится в определенной области:
Rectangle area = someRectangle;
// Check if the mouse position is inside the rectangle
if (area.Contains(mousePosition))
{
backgroundTexture = hoverTexture;
}
else
{
backgroundTexture = defaultTexture;
}
Сделайте что-нибудь, пока нажата левая кнопка мыши:
if (mouseState.LeftButton == ButtonState.Pressed)
{
// Do cool stuff here
}
Помните, что вы всегда будете иметь информацию о текущем кадре .Таким образом, хотя во время нажатия кнопки может произойти что-то крутое, оно остановится, как только будет отпущено.
Чтобы проверить один клик, вам нужно сохранить состояние мыши в последнем кадре и сравнить, что изменилось:
// The active state from the last frame is now old
lastMouseState = currentMouseState;
// Get the mouse state relevant for this frame
currentMouseState = Mouse.GetState();
// Recognize a single click of the left mouse button
if (lastMouseState.LeftButton == ButtonState.Released && currentMouseState.LeftButton == ButtonState.Pressed)
{
// React to the click
// ...
clickOccurred = true;
}
Вы можете сделать его еще более продвинутым и работать с событиями.,Таким образом, вы все равно будете использовать фрагменты сверху, но вместо непосредственного включения кода для действия вы будете запускать события: MouseIn, MouseOver, MouseOut.ButtonPush, ButtonPressed, ButtonRelease и т. Д.