Kiedy przycisk myszy został zwolniony?

0

Po pierwsze chciałbym się przywitać z Wami, z racji tego, że jest to mój pierwszy post na tym forum.

Od pewnego czasu zająłem się poznawaniem XNA. Jak na razie wszystko szło dobrze, ale niestety pojawił się problem, którego nie potrafię rozwiązać. Mianowicie jak wykryć, kiedy przycisk myszy został zwolniony(pierwsze został wciśnięty, trzymany przez pewien czas, a potem puszczony. Potrzebuje właśnie to puszczenie wykryć)?

MouseState mouse = Mouse.GetState();
if (mouse.RightButton == ButtonState.Pressed)
// coś tam

Powyższy kod powoduje wykonywanie się // coś tam wtedy jeżeli przycisk jest wciśnięty. To mnie nie interesuje.
Kiedyś pisałem w SFML. Tam do otrzymania zwolnienia przycisku, używało się Released. Tutaj natomiast, gdy napisałem **Released **zamiast Pressed, robiło się coś dziwnego. Warunek cały czas był na true, a gdy wcisnąłem przycisk myszy był na false.

Ma ktoś z Was może pomysł, jak mogę rozwiązać mój problem?

Pozdrawiam, Andrzej

1

Ponieważ Released to wtedy kiedy jest puszczony i tak ma być. Musisz wykryć czy najpierw był wciśnięty, jak nie to nic nie rób, dopiero jak się wciśnie i potem puści to wykonuje.

0

Dzięki za pomoc.

Jeżeli ktoś jeszcze miałby podobny problem:

// Tworzymy zmienne pomocnicze, w inicjacji nadajemy im false
bool MouseLeftTemp;
bool MouseRightTemp;
// Teraz w funkcji Update
if (mouse.RightButton == ButtonState.Pressed)
    MouseRightTemp = true;
if (mouse.LeftButton == ButtonState.Pressed)
    MouseLeftTemp = true;

if (mouse.RightButton == ButtonState.Released && MouseRightTemp)
{
    MouseRightTemp = false;
    // coś tam
}
if (mouse.LeftButton == ButtonState.Released && MouseLeftTemp)
{
    MouseLeftTemp = false;
    // coś tam
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1