System wiele razy wywołuje keyPressed?

0

Tworzę silnik do gier 2D. Mój InputManager ma możliwość dodawania do niego klawiszy, dla których ma sprawdzać, czy są wciśnięte. Podczas dodawania klawisza decyduje się, czy metoda [i]isPressed[/i] ma zwracać true tak długo jak klawisz jest wciśnięty, czy tylko podczas pierwszego sprawdzenia. Testuję mój silnik i widzę na ekranie, jakie klawisze są wciskane. Widzę, że klawisze, które mają zwracać true cały czas gdy są wciśnięte, wypisują kilka razy nazwę klawisza podczas jednego krótkiego wciśnięcia (i tu jest wszystko dobrze). Jednak klawisze, które zwracają true tylko za pierwszym sprawdzeniem także wypisują na ekranie wiele wyników, jeśli trzymam klawisz dłużej. Wyglada to tak jakby metoda [i]keyPressed[/i] była wywoływana co jakąś sekundę przez system. Czy tak jest rzeczywiście, czy ja coś muszę źle robić? Jeśli system wywołuje tą metodę wiele razy, to czy da się to jakoś ominąć?

0

a nie mozesz zastosowac keyReleased dla tych "pojedynczych" ?

pozdrawiam

0

Nie mogę, bo mam to tak skonstruowane, że gdy zastosuje keyRelease, to wciśnięcie klawisza w ogole nie zostanie zauwazone.

0

Problem jest chyba troszkę bardziej ogólny. Z tego co zrozumiałem masz dwa typy klawiszy:

  • te które mogą być przytrzymane,
  • takie których przytrzymanie powinno działać jak pojedyncze naciśnięcie.
    W takim przypadku zastanów sie nad nadpisaniem metody isPressed() ponieważ standardowa wersja nie rozróżnia klawiszy. Sposób myślenia:
    Wciśnięty? Przytrzymany? ok zwróć true, a który to dokładnie to nieważne.

Tobie zależy, aby metoda działała w taki sposób:
Wciśnięty? Tak → zwróć true. Przytrzymany? Jaki typ? Można go przytrzymać? Tak → Zwróć true. Nie → sprawdź czy jest przytrzymany przez dłuższy czas? Tak → zwróć false. Nie → zwróć true (jak przy wciśnięciu), ustaw flagę na czy był już przytrzymany na true.
Dodatkowo metoda keyRelease powinna powracać flagę do wartości false, tak by zerować stan klawisza.

0

Udało mi się to rozwiązać dodając do mapy klawiszy dodatkowaą właściwość released i odpowiednimi sprawdzeniami.

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