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

[SFML, c++] Jednorazowe wywołanie funkcji

Ostatnio zmodyfikowano 2013-01-04 17:55
Autor Wiadomość
janek
Temat założony przez niniejszego użytkownika
[SFML, c++] Jednorazowe wywołanie funkcji
» 2013-01-04 17:37:30
Piszę w sfml2 i w uproszczeniu mam taki kod:

if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
{
  animation.play("left");
}

Problem polega na tym, że funkcja wywoływana jest bez przerwy gdy wciśnięty jest klawisz, przez co animacja jest rozpoczynana od nowa. Jak zrobić aby funkcja wywołała się tylko 1 raz podczas wciśnięcia klawisza? Druga sprawa jak wywołać funkcję stop() po zwolnieniu klawisza? Skorzystać z sf::Event::KeyReleased?
P-72904
ridic14
» 2013-01-04 17:55:34
Może próbuj tak:
C/C++
// przed pętlą główną
bool pressedLPM;
bool clickLPM

if( sf::Keyboard::isKeyPressed( sf::Keyboard::Left ) )
{
    pressedLPM = true;
}
if( event.type = sf::Event::KeyReleased && event.key.code == sf::Keyboard::Left )
{
    if( pressedLPM )
    { clickLPM = true;
        pressedLPM = false;
    }
}
//poza pętla eventów:
if( clickLPM ) animation.play( "left" );

//i pod koniec głównej pętli
clickLPM = false;
P-72909
« 1 »
  Strona 1 z 1