Skocz do zawartości

Problem z obsługą zwalnianego klawisza spacji


TO_mek

Rekomendowane odpowiedzi

Witam!

Przerobiłem obsługę klawiszy z poszczególnych zdarzeń wciskanych klawiszy na jeden skrypt wywoływany w zdarzeniu "any key" i niby wszystko działa tak samo ale nie jest obsługiwane zdarzenie puszczania klawisza. Konkretnie mam obsługę spacji podzieloną na 3 części:

1. moment wciśnięcia klawisza: if keyboard_check_pressed(vk_space) { nadanie wartości zmiennej globalnej "rysuj" = 1, zmiennej "laduj" = global.czas_ladowana (np. 10xroom_speed)}

2. moment trzymania klawisza spacji wciśniętego: if keyboard_check(vk_space) { dekrementacji zmiennej laduj, oraz gdy zmienna laduj dojdzie do 0 wykonanie akcji zaladowania broni}

3. moment puszczenia klawisza: if keyboard_check_released(vk_space) { nadanie zmiennej laduj wartosci -1, zmiennej rysuj 0}

 

No i działa wciskanie klawisza spacji, trzymanie wciśniętego ale nie działa puszczanie klawisza spacji - i nie następuje wyzerowanie zmiennej rysuj ani zmienna ładuj także nie przyjmuje wartości -1.

 

Zauważyłem, że w momencie gdy mam wciśnięty klawisz spacji i równocześnie wcisnę inny klawisz (np. "K") i puszczę spację mając wciąż wciśnięty ten inny klawisz ("K") to obsługa puszczenia klawisza spacji działa ok.

Czemu to tak działa i jak temu zaradzić?

Odnośnik do komentarza
Udostępnij na innych stronach

Tak jak Uzjel mówi zrób.

Dzieje się tak dlatego, że Any Key jest wykonywana cały czas póki jakiś klawisz jest wciśnięty. Jeśli puścisz to zdarzenie przestanie być wykonywane, a więc nie wykona się instrukcja sprawdzania puszczenia. Za to gdy trzymasz innych klawisz dodatkowo, np. K to zdarzenie dalej jest wykonywane mimo puszczenia spacji, bo coś wciśnięte jest, wiec działa.

Przerzucenie do stepa powinno sprawę załatwić.

Odnośnik do komentarza
Udostępnij na innych stronach

Tak jak Uzjel mówi zrób.

Dzieje się tak dlatego, że Any Key jest wykonywana cały czas póki jakiś klawisz jest wciśnięty. Jeśli puścisz to zdarzenie przestanie być wykonywane, a więc nie wykona się instrukcja sprawdzania puszczenia. Za to gdy trzymasz innych klawisz dodatkowo, np. K to zdarzenie dalej jest wykonywane mimo puszczenia spacji, bo coś wciśnięte jest, wiec działa.

Przerzucenie do stepa powinno sprawę załatwić.

 

 

No w sumie jest to logiczne :). Wrzucam do stepa i będzie ok. Dzięki.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...