Autor Wątek: Odczytanie pojedynczego kliknięcia myszki  (Przeczytany 1104 razy)

Offline kudlacz12

  • Użytkownik

# Kwiecień 28, 2011, 08:48:32
Witam mam problem z odczytaniem kliknięcia myszki. Chodzi mi o to że mam pewną funkcje która dodaje obiekt lecz gdy kliknę myszką dawanych jest ok 10 obiektów, ponieważ za jednym kliknięciem odczytanych jest parę tych kliknięć proszę o pomoc.
Kod:
bool klik()
{
if(SDL_GetMouseState(NULL, NULL)&SDL_BUTTON(SDL_BUTTON_LEFT))
{
return true;
}else{
return false;
}
}

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Liosan

  • Redaktor

# Kwiecień 28, 2011, 09:42:11
Potrzebujesz zapamiętać, że przycisk jest wciśnięty, i ignorować kolejne komunikaty przez kolejne, dajmy na to, 50ms.

Liosan

Offline Adam7

  • Użytkownik
    • warsztat.gd

# Kwiecień 28, 2011, 09:56:43
albo aż do podniesienia się przycisku

Offline hashedone

  • Użytkownik

# Kwiecień 28, 2011, 10:42:19
Albo użyć pętli komunikatów. Jest opisana w dokumentacji sdl.

Offline Xirdus

  • Redaktor

# Kwiecień 28, 2011, 17:14:04
Kod: (cpp) [Zaznacz]
static bool clicked = false;
if ( SDL_GetMouseState (NULL, NULL) & SDL_BUTTON (SDL_BUTTON_LEFT) )
{
if (!clicked)
{
clicked = true;
return true;
}
}
else
{
clicked = false;
return false;
}

Offline hashedone

  • Użytkownik

# Kwiecień 28, 2011, 17:38:34
Oczywiście pod warunkiem, że funkcja jest wywoływana kilkanaście razy w sekundzie (żeby wychwycić szybkie/krótkie kliknięcia). SDL_BUTTON i SDL_GetMouseState nie służą do wychwytywania zmian myszy, tylko do sprawdzania ich stanu. Za ich pomocą można sprawdzić czy teraz wciśnięty jest przycisk myszy, nie czy przez ostatnią sekundę było kliknięcie.

Offline Xirdus

  • Redaktor

# Kwiecień 28, 2011, 17:46:18
Oczywiście pod warunkiem, że funkcja jest wywoływana kilkanaście razy w sekundzie
Jeśli się to umieści w pętli głównej, to jest.