-
Notifications
You must be signed in to change notification settings - Fork 19
Animator
Szymon edited this page May 26, 2016
·
1 revision
#Animator Klasa służąca do Animowania sprite'ów
Pełna definicja klasy znajduje się tutaj.
##Dostępne metody
Nazwa | Zwracany typ | Opis |
---|---|---|
Animator () | none | Ustawia domyślne parametry: delay=0.5s, speed = 1s, loop = false. |
SetSprite (target) | void | Pobiera referencję sprite'a, którego należy animować |
AddAnimationState (name, atlas, begin, end) | bool | Tworzy nowy stan animacji o podanej unikalnej nazwie, używając podanego atlasu wraz zakresem tekstur do wykorzystania w atlasie: (inclusive,inclusive). Zwraca false jeżeli nie da się utworzyć stanu. |
ChangeActiveState(name) | bool | Zmienia aktywny stan na ten o podanej nazwie o ile istnieje i aktywuje animację. Zwraca false jeżeli stan nie istnieje |
GetActiveState() | string | Zwraca nazwę aktualnie odtwarzanego stanu |
SetAnimationSpeed(speed) | void | Zmienia prędkość animowania, jeżeli < 1, to wykonuje animację wolniej, == 1 normalna prędkość, > 1 szybciej |
SetDelayBetweenFrames(sec) | void | Bazowy czas na 1 klatkę animowania w sekundach |
SetLoop(loop) | void | Czy animacja ma być zapętlona |
Animate(dt) | void | Funkcja aktualizująca animację, jako parametr przyjmuje delta time w sekundach |
##Usage
// stworzenie jakiegoś atlasu tekstur
TextureAtlas atlas;
atlas.LoadFromFile("sample.png");
atlas.TrimByGrid(64, 64);
int lastFrame = atlas.GetCount() - 1;
// tworzenie animatora
Animator animator;
sf::Sprite sprite;
animator.SetSprite(sprite); // ustawienie sprite'a
animator.SetDelayBetweenFrames(2); // ustawienie czasu pomiędzy klatkami na 2s
animator.SetLoop(true); // zapętlenie animacji
animator.SetAnimationSpeed(2); // przyspieszczenie animacji, w rezultacie klatki będą zmieniane 2 razy szybciej, czyli co 1s
animator.AddAnimationState("my_state", atlas, 0, lastFrame); // stworzenie stanu i wykorzystanie całego atlasu do animacji
animator.ChangeActiveState("my_state"); // zmiana i odtworzenie animacji stanu "my_state"
...
// główna pętla gry
while(...)
{
...
// sekcja aktualizowania obiektów
animator.Animate(dt);
...
}