Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SDL]Powtarzanie klawiszy podczas poruszania sie postaci

Ostatnio zmodyfikowano 2011-01-26 20:32
Autor Wiadomość
ThudPoland
» 2011-01-24 21:43:43
Wybacz, pomyliłem kod - ten kod co był wcześniej był po prostu jego rozwinięciem (tego co teraz będzie) (instrukcjami wykonywanymi jeżeli warunek będzie spełniony, a warunkiem jakby nie było jest coś powiązanego z SDL_Pressed).

SDL_PRESSED (jak i SDL_RELEASED) wykorzystuje się jako wartość jednego z pól z pól klasy SDL_Event.
C/C++
if( Event.button.state == SDL_PRESSED )
{
    //Tu był ten wcześniejszy kod
}
P-27014
Savail
Temat założony przez niniejszego użytkownika
» 2011-01-24 21:57:41
aha no nie wiedzialem nawet o takich polach w event :P(jakos nazw nigdzie sie nie doszukalem)...
A czy te twoje operacje ze zdarzeniami sa poprzedzone przez SDL_PollEvent lub SDL_PumpEvents()?
P-27015
ThudPoland
» 2011-01-24 22:11:21
Przynajmniej ja używam w swoim kodzie tego pierwszego.
P-27016
ThudPoland
» 2011-01-24 22:13:39
C/C++
while( SDL_PollEvent( & Event ) )
{
    if( Event.button.state == SDL_PRESSED )
    {
    }
}

Ehh... kurcze, sorry za double posta. No ale niech zostanie.
P-27017
Savail
Temat założony przez niniejszego użytkownika
» 2011-01-24 22:21:37
hmm sam juz nie wiem ;/. Ja w swojej grze uzywam zarowno SDL jak i Opengl, moze to tez jakies problemy tworzy...
W kazdym razie mam glowna petle obslugujaca eventy w ktorej nie moge jednak zawrzec tych operacji ruchu postaci i dlatego tworze drugai zastanwiam sie czy mozna uzywac 2 razy SDL_PollEvent. Nawet utworzylem publiczna zmienna SDL_Event i ta jedna zmienna jest uzywana w 2 petlach ale nadal mi nie wychodzi a kod po przerobkach wyglada tak:
C/C++
size_t last_ticks = SDL_GetTicks();
bool run = false;
bool run_start = false;

if( key[ SDLK_RIGHT ] && SDL_PollEvent( & object_laduj3.event ) ) {
    size_t ticks = SDL_GetTicks();
    double delta_time =( ticks - last_ticks ) / 1000.0;
    if( delta_time > 1 ) {
        last_ticks = ticks;
        if( key[ SDLK_RIGHT ] && object_laduj3.event.button.state == SDL_RELEASED ) { run = true; }
        if( key[ SDLK_RIGHT ] && object_laduj3.event.button.state == SDL_PRESSED && run == true ) { run_start = true; }
        if( object_laduj3.event.button.state == SDL_RELEASED ) run_start = false;
       
    }
    if( run_start == false ) Walk();
    else if( run_start == true ) Run();
   
}
Tym razem postac w ogole nawet w prawo sie nie porusza... Ze tez tyle problemow z powtorzeniem jednego klawisza ;/
P-27018
ThudPoland
» 2011-01-24 22:24:54
Popatrz na mój kod - czy tam mam jedno if z dwoma warunkami, czy if zagnieżdzone w pętli?
Funkcja SDL_PollEvent() musi być w pętli!

Zapraszam do lektury:
http://lazyfoo.net/SDL_tutorials/lesson04/index.php
P-27019
Savail
Temat założony przez niniejszego użytkownika
» 2011-01-24 22:30:46
gdy jest w petli rezultat taki sam, dobra dzieki za czas, napewno sie sporo dowiedzialem ale nad tym problemem bedzie trzeba chyba dluzej posiedziec ;/
P-27020
ThudPoland
» 2011-01-24 22:31:52
Możesz mi dać cały kod? Pokombinuję coś i dam znać, wytłumaczę (jeżeli mi się uda) co jest nie tak.
Napisz na GG: 24228421. Później postaram się wytłumaczyć całość wszystkim użytkownikom.

A GG może wziąść sobie każdy.
P-27021
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona