In XNA è possibile utilizzare Mouse class per interrogare l'input dell'utente.
Il modo più semplice per farlo è quello di controllare lo stato del mouse per ogni fotogramma e reagire di conseguenza. La posizione del mouse è all'interno di una determinata area? Mostra un cursore diverso. Il pulsante destro è premuto durante questo frame? Mostra un menu. ecc
var mouseState = Mouse.GetState();
ottenere la posizione del mouse in coordinate dello schermo (relativamente all'angolo in alto a sinistra):
var mousePosition = new Point(mouseState.X, mouseState.Y);
Change una texture quando il mouse si trova all'interno di una certa area:
Rectangle area = someRectangle;
// Check if the mouse position is inside the rectangle
if (area.Contains(mousePosition))
{
backgroundTexture = hoverTexture;
}
else
{
backgroundTexture = defaultTexture;
}
Fai qualcosa mentre fai clic con il pulsante sinistro del mouse:
if (mouseState.LeftButton == ButtonState.Pressed)
{
// Do cool stuff here
}
Ricorda però che avrete sempre le informazioni della corrente telaio . Quindi, mentre qualcosa di interessante può accadere durante il tempo in cui il pulsante viene cliccato, si fermerà non appena rilasciato.
Per verificare la presenza di un solo clic si dovrà memorizzare lo stato del mouse del l'ultimo fotogramma e confrontare ciò che è cambiato:
// 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;
}
Si potrebbe rendere ancora più avanzato e lavorare con gli eventi. Così si sarebbe comunque utilizzare i frammenti dall'alto, ma invece di includere direttamente il codice per l'azione che avrebbe sparato eventi: mouseIn, MouseOver, mouseout. ButtonPush, ButtonPressed, ButtonRelease, ecc
è offerto su http : //gamedev.stackexchange.com/ – RQDQ