Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SDL]Powtarzanie klawiszy podczas poruszania sie postaci

Ostatnio zmodyfikowano 2011-01-26 20:32
Autor Wiadomość
ThudPoland
» 2011-01-25 22:13:44
Problem został rozwiązany. Przynajmniej mi się tak wydaje i kolegowi Savail także.
Jeżeli nie zapomnę jutro pokażę rozwiązanie.
P-27064
ThudPoland
» 2011-01-26 20:32:19
Jak też powiedziałem tak też zrobię. Cały problem opierał się na tym, żeby napisać specjalny licznik który po odpowiednim czasie (chyba że przycisk "sterujący" jest nadal wciśnięty).

Działanie licznika:
jeżeli(odpowiedni_klawisz==wciśnięto i licznik==0) to licznik=1;
jeżeli zaś(odpowiedni_klawisz==uwolniono i licznik==1 i delta_czasu==odpowiednia) to licznik=2;
jeżeli zaś(odpowiedni_klawisz==wciśnięto i licznik==2 i kolejna_delta_czasu==odpowiednia) to włącz_bieganie i licznik=3;
dopoki(odpowiedni_klawisz==przytrzymano i licznik==2) to biegaj_dalej;
w przeciwnym wypadku wyzeruj licznik;

Taka była idea. Chodź gdyby całość przełożyć na C++ to kod nie byłby taki sam.

W kodzie kolegi cały problem polegał na tym, że używał tablicy Uint8 do przechowywania stanów klawiszy. Ten problem udało mi się rozwiązać dzięki kilku podobnym instrukcjom wklepanym w odpowiednie warunki. Tutaj macie przykładowe użycie tychże instrukcji:
C/C++
if( Event.key.type == SDL_KEYDOWN ) DoSomething();
else if( Event.key.type == SDL_KEYUP ) DoSomethingElse();
//Bądź też:
if( Event.key.state == SDL_PRESSED ) DoSomething();
else if( Event.key.state == SDL_RELEASED ) DoSomethingElse();


Po szczegółowe informacje zapraszam do dokumentacji:
http://sdl.beuc.net/sdl.wiki/SDL_KeyboardEvent
P-27160
1 2 « 3 »
Poprzednia strona Strona 3 z 3