Trong XNA, bạn có thể sử dụng Mouse class để truy vấn đầu vào của người dùng.
Cách dễ nhất để làm là kiểm tra trạng thái chuột cho mỗi khung và phản ứng tương ứng. Vị trí chuột có nằm trong một khu vực nhất định không? Hiển thị con trỏ khác. Nút phải được nhấn trong khung này? Hiển thị menu. vv
var mouseState = Mouse.GetState();
Lấy vị trí chuột trong tọa độ màn hình (tương đối so với góc trên cùng bên trái):
var mousePosition = new Point(mouseState.X, mouseState.Y);
Thay đổi kết cấu khi chuột nằm bên trong một khu vực nhất định:
Rectangle area = someRectangle;
// Check if the mouse position is inside the rectangle
if (area.Contains(mousePosition))
{
backgroundTexture = hoverTexture;
}
else
{
backgroundTexture = defaultTexture;
}
Làm điều gì đó trong khi nhấn nút chuột trái:
if (mouseState.LeftButton == ButtonState.Pressed)
{
// Do cool stuff here
}
Hãy nhớ rằng bạn sẽ luôn có thông tin về khung hiện tại. Vì vậy, trong khi một cái gì đó mát mẻ có thể xảy ra trong thời gian nút được nhấp, nó sẽ dừng lại ngay sau khi phát hành.
Để kiểm tra đối với một nhấp chuột duy nhất bạn sẽ phải lưu trữ tình trạng chuột của khung cuối cùng và so sánh những gì đã thay đổi:
// 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;
}
Bạn có thể làm cho nó thậm chí nâng cao hơn và làm việc với các sự kiện. Vì vậy, bạn vẫn sẽ sử dụng các đoạn từ trên cao, nhưng thay vì trực tiếp bao gồm mã cho hành động bạn sẽ kích hoạt các sự kiện: MouseIn, MouseOver, MouseOut. ButtonPush, ButtonPressed, ButtonRelease vv
này thuộc về http : //gamedev.stackexchange.com/ – RQDQ