Skip to content

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);
  
  ...
}
Clone this wiki locally