Animację można podzielić na 3 grupy
- Liniowe (linear) - pozwalają na zmianę w liniowy sposób danej właściwości. Nazwy rozpoczynają się od <TypeName>Animation np. DoubleAnimation, przedrostek TypeName jest nazwą typu animacji.
- Klatkowe (frame) - animacja jest zdefiniowana jako osobne klatki pojawiające się w zdefiniowanym czasie i mające zdefiniowaną wartość. Nazewnictwo: <TypeName>AnimationUsingKeyFrames np. StringAnimationUsingKeyFrames
- "Ścieżkowe" - (Path based) - tłumaczenie polskie niezbyt dobre jednak chodzi o definiowanie animacji za pomocą obiektu typu Path. Najczęściej używane w przypadku zmiany położenia obiektu na formatce. Nazewnictwo: <TypeName>AnimationUsingPath np. PointAnimationUsingPath
Podstawowe właściwości, które można znaleźć w klasach odpowiedzialnych za animacje:
- AccelerationRatio - określa jak w czasie zostanie przyśpieszona zmiana wartości animowanej właściwości
- AutoReverse - określa czy animacja ma być odtwarzana od tyłu po jej zakończeniu
- BeginTime - określa relatywny czas rozpoczęcia animacji. Dla przykładu: ustawienie tej właściwości na wartość 0:0:5 spowoduje że jej odtwarzanie nastąpi po 5 sekundach od jej uaktywnienia
- DecelerationRatio - określa w jakim tempie animacja będzie zwalniała podczas wracania do punktu startowego
- Duration - czas trwania animacji
- FillBehavior - określa co ma się stać po zakończeniu animacji
- RepeatBehavior - określa sposób powtarzania animacji
- SpeedRatio - określa stosunek w jakim dana animacja wykonuje postęp w stosunku do jej rodzica
- From - określa wartość początkową - jeżeli pominiemy będzie użyta aktualna
- To - wartość końcowa
- By - określa czas przez który dana właściwość będzie zmieniana - jeżeli jest ustawiona właściwość To, By jest pomijane
Storyboard
Steruje i kontroluje animacją. W właściwości Children przechowuje obiekty typu Timeline, które zawierają w sobie obiekty Animacji.
Deklaracja:
Code:
Jako że TargetName oraz TargetProperty są właściwościami typu attached można także przypiąć je do odpowiedniego elementu:
Code:
Jest to preferowane rozwiązanie, gdyż w większości przypadków StoryBoard będzie zawierał więcej niż jedną animację na raz.
Użycie animacji wraz z triggerami
Aby animacja mogła być uruchomiona można użyć np. triggerów. Ich użycie może być na jeden z dwóch sposobów:
- style
- kolekcja triggers kontrolki
Code:
Klasy akcji które możemy użyć w celu kontroli animacji:
- BeginStoryboard - służy do rozpoczynania animacji
- PauseStoryboard - zatrzymuje odtwarzanie animacji
- ResumeStoryboard - wznawia animację
- SeekStoryboard - szybkie przewinięcie do żądanego czasu
- SetStoryboardSpeedRatio - ustawia szybkość odtwarzania animacji
- SkipStoryboardToFill - przewija do końca animacji
- StopStoryboard - zatrzymuje odtwarzanie
Code:
Ważne, aby wszystkie akcje dla jednego StoryBoard były zawarte w jednej kolekcji StoryBoard. Jeżeli będą w różnych, funkcje nie będą wywoływane poprawnie.
Aby działanie SeekStoryboard mogło mieć miejsce, należy ustawić dla niej dwie dodatkowe właściwości:
- Orgin - może mieć wartość BeginTime lub Duration.
- Offset - o ile zostanie przewinięta animacja od momentu Orgin
Code:
Powyższy przykład powoduje przewinięcie animacji 5 sekund od aktualnej pozycji.
Użycie property triggerów
Animację można także używać w przypadku property triggerów. Dostępne są w tym przypadku dwie kolekcje:
- EnterActions - akcje wykonywane w momencie zadziałania triggera
- ExitActions - uruchamiane w momencie gdy trigger staje się nieaktywny
Code:
Klatkowe animacje
Jak wcześniej wspominałem ten rodzaj animacji definiuje serię klatek. Każda z nich posiada osobno definicję czasu trwania. Do dyspozycji mamy trzy rodzaje klatkowych animacji:
LinearDoubleKeyFrame - przejście między wartościami następuje w sposób jednostajny
Code:
DiscreteStringKeyFrame - dla niektórych typów danych np. ciągów znakowych nie można zwiększyć wartości, dlatego stosuje się "dyskretne" zmiany, np:
Code:
Spline key frames - zmiany są wyrażone przy użyciu krzywej Beziera:
Code:
Brak komentarzy:
Prześlij komentarz