 |
Coders' city Nasza pasja to programowanie!
|
Zobacz poprzedni temat :: Zobacz nastêpny temat |
Autor |
Wiadomo¶æ |
shout
Do³±czy³: 09 Cze 2017 Posty: 2
|
Wys³any: Pi± Cze 09, 2017 3:07 pm OP Temat postu: SDL2 Przyciski |
|
|
Witam!
Mój problem polega na tym, ?e mam klas? inputManager w której s? metody : KeyPressed(int key), KeyReleased(int key), które wygl?daj? nast?puj?co:
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, które wy?wietlaj? obraz. W ka?dej z nich jest metoda Update(), która sprawdza czy przycisk jest wci?ni?ty (np. esc), je?li tak zmieni obrazek z klasy1, na obrazek z klasy2.
Problem polega na tym, ?e gdy przytrzymam esc obrazki b?d? si? ci?gle zmienia? mi?dzy sob? (22 razy dla ka?dej klasy). Chcia?bym zrobi? to w ten sposób, ?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 mo?e filmik jak to wygl?da : https://www.youtube.com/watch?v=-PlOogBonU0&feature=youtu.be Pozdrawiam |
|
Powrót do góry |
|
 |
|
lethern

Do³±czy³: 09 Pa¼ 2007 Posty: 1115
|
Wys³any: Pi± Cze 09, 2017 3:51 pm Temat postu: |
|
|
Zapisuj stan, np. w postaci flagi, i obs?uguj to jako przej?cia z jednego stanu w inny stan? Wydaje is?, ?e rozró?niasz dwa stany (wy?wietlanie z jednej lub drugiej klasa)
(Bo w tym momencie - tak jak zrozumia?em Twój opis problemu - robisz to bez zapami?tania jakiego? stanu - ile razy z?apie event, tyle razy wykona si? akcja - gdyby? obs?ugiwa? stan, to móg?by? akcj? wykonywa? tylko w okre?lonym stanie. Je?li dobrze odczyta?em, to zaczynasz w stanie "rysuje klasa A", wci?ni?cie klawisza powoduje przej?cie w stan "rysuje klasa B", puszczenie klawisza powoduje powrót do stanu "rysuje klasa A")
Jednak patrz?c na za??czony kod, to nie mam poj?cia co tam si? dzieje i dlaczego co? mo?e nie dzia?a?, wi?c mój opis mo?e si? mija? z rozwi?zaniem... |
|
Powrót do góry |
|
 |
shout
Do³±czy³: 09 Cze 2017 Posty: 2
|
Wys³any: Pi± Cze 09, 2017 4:08 pm OP Temat postu: |
|
|
Nie chodzi mi tutaj o to, ?e gdy przytrzymam klasa1 zmieni si? na klase2, a jak puszcz? to znów 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 znów klikn? esc. Mo?e s?abo to opisa?em w tym momencie... Przyk?ad: gra cs go, jestem ju? na mapie np. de_dust2 chce zmie? sobie np. g?o?no??, klikam esc i w??czaj? mi si? opcje, potem znów 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. Pyta?em si? kiedy? takiej osoby, dosta?em wtedy odpowied?, ?e powinienem u?y? zmiennej boolean, ale próbowa?em wszystkich opcji z t? zmienn?, nawet takich, które nie mia?y ?adnego sensu. |
|
Powrót do góry |
|
 |
lethern

Do³±czy³: 09 Pa¼ 2007 Posty: 1115
|
Wys³any: Pi± Cze 09, 2017 5:18 pm Temat postu: |
|
|
Wci?ni?ty Esc, wykonujesz akcj?, wci?ni?ty drugi raz, wykonujesz inn? akcj? - nie rozumiem gdzie mo?e le?e? problem? Je?li nie tu, to id?c dalej Mo?e masz problem z okre?leniem "wci?ni?ty klawisz", bo mo?e "pressed" to nie jest event okre?laj?cy wci?ni?cie klawisza które tu mam na my?li, tylko zachowuje si? jako "trzymanie klawisza". Je?li nie masz obs?ugi eventa pojedynczego wci?ni?cia klawisza, to potrzebujesz to jako? obej?? - pierwszy press key jest wci?ni?ciem klawisza, kolejne press key s? ignorowane tak d?ugo a? pojawi si? release key
Ponownie, próbuje zrozumie? jak ten problem si? pojawia, ale to nie pasuje do kodu który zamie?ci?e? |
|
Powrót do góry |
|
 |
|
|
Mo¿esz pisaæ nowe tematy Mo¿esz odpowiadaæ w tematach Nie mo¿esz zmieniaæ swoich postów Nie mo¿esz usuwaæ swoich postów Nie mo¿esz g³osowaæ w ankietach Mo¿esz dodawaæ za³±czniki na tym forum Mo¿esz pobieraæ pliki z tego forum
|
 Debug: strone wygenerowano w 0.04381 sekund, zapytan = 11
|