Forum Coders' city Strona Gwna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UytkownicyUytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj si, by sprawdzi wiadomociZaloguj si, by sprawdzi wiadomoci   ZalogujZaloguj 

Potrzebuj szybkiej odpowiedzi na moje pytanie... Zasady

SDL2 Przyciski



 
Odpowiedz do tematu    Forum Coders' city Strona Gwna -> Biblioteki
Zobacz poprzedni temat :: Zobacz nastpny temat  
Autor Wiadomo
shout



Doczy: 09 Cze 2017
Posty: 2

PostWysany: Pi Cze 09, 2017 3:07 pm  OP    Temat postu: SDL2 Przyciski Odpowiedz z cytatem Pisownia

Witam!

Mj problem polega na tym, e mam klas inputManager w ktrej s metody : KeyPressed(int key), KeyReleased(int key), ktre wygldaj nastpujco:

Kod:
bool InputManager::KeyPressed(int key)
{
if (event.key.state == SDL_PRESSED && event.key.repeat == 0)
{
if (event.key.keysym.sym == key )
{
return true;
}
}
return false;
}

bool InputManager::KeyReleased(int key)
{
if (event.key.state == SDL_RELEASED && event.key.repeat == 0)
{
if (event.key.keysym.sym == key)
{
return true;
}
}
return false;
}


Mam te 2 klasy, ktre wywietlaj obraz. W kadej z nich jest metoda Update(), ktra sprawdza czy przycisk jest wcinity (np. esc), jeli tak zmieni obrazek z klasy1, na obrazek z klasy2.

Problem polega na tym, e gdy przytrzymam esc obrazki bd si cigle zmienia midzy sob (22 razy dla kadej klasy). Chciabym zrobi to w ten sposb, e gdy przycisn i przytrzymam esc wtedy z klasy1 zmieni si na klase2 i zatrzyma, i dopiero wtedy kiedy puszcz i przycisn ponownie zmieni si na klase1. Tutaj moe filmik jak to wyglda : https://www.youtube.com/watch?v=-PlOogBonU0&feature=youtu.be
Pozdrawiam
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
lethern



Doczy: 09 Pa 2007
Posty: 1106

PostWysany: Pi Cze 09, 2017 3:51 pm      Temat postu: Odpowiedz z cytatem Pisownia

Zapisuj stan, np. w postaci flagi, i obsuguj to jako przejcia z jednego stanu w inny stan? Wydaje is, e rozrniasz dwa stany (wywietlanie z jednej lub drugiej klasa)

(Bo w tym momencie - tak jak zrozumiaem Twj opis problemu - robisz to bez zapamitania jakiego stanu - ile razy zapie event, tyle razy wykona si akcja - gdyby obsugiwa stan, to mgby akcj wykonywa tylko w okrelonym stanie. Jeli dobrze odczytaem, to zaczynasz w stanie "rysuje klasa A", wcinicie klawisza powoduje przejcie w stan "rysuje klasa B", puszczenie klawisza powoduje powrt do stanu "rysuje klasa A")

Jednak patrzc na zaczony kod, to nie mam pojcia co tam si dzieje i dlaczego co moe nie dziaa, wic mj opis moe si mija z rozwizaniem...

_________________
uywasz Dev-Cpp? tools->editor options -> use tab character (wcz), smart tabs (wycz)... albo cignij np. Visual Studio C++ free.
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo Wylij email
shout



Doczy: 09 Cze 2017
Posty: 2

PostWysany: Pi Cze 09, 2017 4:08 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Nie chodzi mi tutaj o to, e gdy przytrzymam klasa1 zmieni si na klase2, a jak puszcz to znw na klase1, tylko o to, e gdy przytrzymam esc, wtedy z klasy1 zmieni si na klase2 i jak pusz to nadal jest ta klasa2, a do momentu, kiedy znw klikn esc. Moe sabo to opisaem w tym momencie... Przykad: gra cs go, jestem ju na mapie np. de_dust2 chce zmie sobie np. gono, klikam esc i wczaj mi si opcje, potem znw klikam esc i wracam do gry. Nie jest tak, e jak przytrzymam esc obraz zaczyna mi miga z opcji do gry, z gry do opcji itd.
Pytaem si kiedy takiej osoby, dostaem wtedy odpowied, e powinienem uy zmiennej boolean, ale prbowaem wszystkich opcji z t zmienn, nawet takich, ktre nie miay adnego sensu.
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
lethern



Doczy: 09 Pa 2007
Posty: 1106

PostWysany: Pi Cze 09, 2017 5:18 pm      Temat postu: Odpowiedz z cytatem Pisownia

Wcinity Esc, wykonujesz akcj, wcinity drugi raz, wykonujesz inn akcj - nie rozumiem gdzie moe lee problem? Jeli nie tu, to idc dalej
Moe masz problem z okreleniem "wcinity klawisz", bo moe "pressed" to nie jest event okrelajcy wcinicie klawisza ktre tu mam na myli, tylko zachowuje si jako "trzymanie klawisza". Jeli nie masz obsugi eventa pojedynczego wcinicia klawisza, to potrzebujesz to jako obej - pierwszy press key jest wciniciem klawisza, kolejne press key s ignorowane tak dugo a pojawi si release key

Ponownie, prbuje zrozumie jak ten problem si pojawia, ale to nie pasuje do kodu ktry zamiecie

_________________
uywasz Dev-Cpp? tools->editor options -> use tab character (wcz), smart tabs (wycz)... albo cignij np. Visual Studio C++ free.
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo Wylij email
Wywietl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Gwna -> Biblioteki Wszystkie czasy w strefie CET (Europa)

Strona 1 z 1

 
Skocz do:  
Moesz pisa nowe tematy
Moesz odpowiada w tematach
Nie moesz zmienia swoich postw
Nie moesz usuwa swoich postw
Nie moesz gosowa w ankietach
Moesz dodawa zaczniki na tym forum
Moesz pobiera pliki z tego forum




Debug: strone wygenerowano w 0.21281 sekund, zapytan = 11
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |