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.04284 sekund, zapytan = 12
contact

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