Forum Coders' city Strona G³ówna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   U¿ytkownicyU¿ytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj siê, by sprawdziæ wiadomo¶ciZaloguj siê, by sprawdziæ wiadomo¶ci   ZalogujZaloguj 

Potrzebujê szybkiej odpowiedzi na moje pytanie... Zasady

SDL2 Przyciski



 
Odpowiedz do tematu    Forum Coders' city Strona G³ówna -> Biblioteki
Zobacz poprzedni temat :: Zobacz nastêpny temat  
Autor Wiadomo¶æ
shout



Do³±czy³: 09 Cze 2017
Posty: 2

PostWys³any: Pi± Cze 09, 2017 3:07 pm  OP    Temat postu: SDL2 Przyciski Odpowiedz z cytatem Pisownia

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
Zobacz profil autora Wy¶lij prywatn± wiadomo¶æ
lethern



Do³±czy³: 09 Pa¼ 2007
Posty: 1115

PostWys³any: Pi± Cze 09, 2017 3:51 pm      Temat postu: Odpowiedz z cytatem Pisownia

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
Zobacz profil autora Wy¶lij prywatn± wiadomo¶æ Wy¶lij email
shout



Do³±czy³: 09 Cze 2017
Posty: 2

PostWys³any: 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 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
Zobacz profil autora Wy¶lij prywatn± wiadomo¶æ
lethern



Do³±czy³: 09 Pa¼ 2007
Posty: 1115

PostWys³any: Pi± Cze 09, 2017 5:18 pm      Temat postu: Odpowiedz z cytatem Pisownia

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
Zobacz profil autora Wy¶lij prywatn± wiadomo¶æ Wy¶lij email
Wy¶wietl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona G³ówna -> Biblioteki Wszystkie czasy w strefie CET (Europa)

Strona 1 z 1

 
Skocz do:  
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
contact

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