[Allegro] problem z obsługą myszy.
Ostatnio zmodyfikowano 2010-09-12 21:40
tramwaj157 Temat założony przez niniejszego użytkownika |
[Allegro] problem z obsługą myszy. » 2010-09-12 19:36:40 Witam;]
piszę grafikę do szachów w bibliotece Allegro. mam problem z obsługą myszki.
int nacisniete = 0; while( !key[ KEY_ESC ] ) { if( mouse_b & 1 ) nacisniete = 1; if( !mouse_b & 1 && nacisniete == 1 ) { } nacisniete = 0; }
to jest tylko taki przykład mojego rozumowania. do tego muszę jeszcze dodać miejsce kliknięcia etc. ale niestety to nie działa. jak wyżej napisałem, jeśli usunę tamtą linijkę to zadziała, ale tylko raz.
czy źle rozumuję?
proszę o odpowiedź.
Pozdrawiam!
btw. jak tutaj zacytowac? ;> |
|
DejaVu |
» 2010-09-12 19:48:30 Co do cytowania: Kurs STC.
Co do klikania: zależy jaki konkretnie efekt chcesz wykonać i w którym miejscu planujesz jego obsługę. Generalnie polecam zrobić sobie jakąś flagę: 'przycisk został wciśnięty' i jeżeli masz stan:
if( przycisk_zostal_wcisniety && obecny_przycisk == 0 ) { }
/edit:
Inna (prosta) opcja to:
if( stary_przycisk != obecny_przycisk && obecny_przycisk == 1 ) { } |
|
tramwaj157 Temat założony przez niniejszego użytkownika |
» 2010-09-12 19:57:47 Właśnie chciałbym, żeby program dostaje sygnał, że kliknąłem myszkę, potem zczytuje współrzędne kliknięcia na bitmapie. DejaVu co masz na myśli pisząc przycisk? jakiś obiekt klasy? właśnie myślałem nad tym, ale wtedy muszę zrobić 64 elementy, a tak jak pisałem wyżej byłoby prościej(tak mi się wydaje). pozdrawiam! |
|
ison |
» 2010-09-12 20:01:41 jeśli Cię dobrze zrozumiałem to: int nacisniete = 0; while( !key[ KEY_ESC ] ) { if( mouse_b & 1 ) nacisniete = 1; if( !mouse_b & 1 && nacisniete == 1 ) { nacisniete = 0; } }
|
|
DejaVu |
» 2010-09-12 20:11:38 int stary_przycisk = mouse_b; while(...) { int nowy_przycisk = mouse_b; if( nowy_przycisk != stary_przycisk && nowy_przycisk == 1 ) { } stary_przycisk = nowy_przycisk; } |
|
tramwaj157 Temat założony przez niniejszego użytkownika |
» 2010-09-12 20:12:43 Brawo!Działa.Nie wpadłem na to. ale jak to logicznie wytłumaczyć ? |
|
DejaVu |
» 2010-09-12 20:14:22 Proste: jeżeli został naciśnięty klawisz - ustaw flagę.
jeżeli został puszczony klawisz (i flaga ustawiona) - wykonaj akcję i wyczyść flagę (to mowa o kodzie ison'a). |
|
tramwaj157 Temat założony przez niniejszego użytkownika |
» 2010-09-12 20:17:16 Dzięki za pomoc :)) A jeszcze jeden problem napotkałem: int nacisniete = 0; while( !key[ KEY_ESC ] ) { if( mouse_b & 1 ) nacisniete = 1; if( !mouse_b & 1 && nacisniete == 1 ) { nacisniete = 0; } }
sytuacja jest taka: pobieram współrzędne myszki z pierwszego IFa, jak puszcze przycisk to w drugim IFie znowu sprawdzam współrzędne. Myślałem że współrzędne będą różne. jeśli przeciągam przyciśniętą myszkę to to się nie sprawdza;/ współrzędne z pierwszego ifa cały czas się aktualizują. Jest jakiś sposób żeby pobrać współrzędne naciśnięcia, żeby się nie zmieniały do czasu puszczenia przycisku ? |
|
« 1 » 2 |