 |
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.04200 sekund, zapytan = 11
|