## Podejście stałoklatkowe (stała ilość klatek)
Musisz podzielić swoją pętlę gry na dwie części - logiczną i wizualną. Zasada jest taka - tak długo jak jeszcze nie można zmienić klatki (tzn. nie upłynął wystarczający czas) powinny wykonywać się logiczne procesy (obliczenia, ruszanie postaci itp [ruszanie, czyli zmiana pozycji sprite != rysowanie sprite] itp), a następnie dopiero wizualne procesy (czytaj - wymazanie wszystkiego i narysowanie od nowa)
Pseudokod:
void GameState::run()
{
loopManager.increaseTime();
while ( !loopManager.canChangeTheFrame() )
{
logicProcessing();
loopManager.reduceTime();
}
visualProcessing();
}
Jednak ty chcesz jakąś funkcję tylko przy zmianie klatki, także:
void GameState::run()
{
loopManager.increaseTime();
while ( !loopManager.canChangeTheFrame() )
{
logicProcessing();
loopManager.reduceTime();
}
myFunction();
visualProcessing(); // <---lub możesz myFunction() zawrzeć tutaj
}
## Podejście swobodne (zmienna ilość klatek)
Tutaj po prostu wywołujesz swoją funkcję przed/po rysowaniu obiektów na scenie - zauważ, że zmiana klatki występuje wtedy gdy narysujesz wszystko od nowa.