Usnadnění funkcí
Uživatelské rozhraní .NET Multi-Platform App UI (.NET MAUI) obsahuje Easing třídu, která umožňuje určit funkci přenosu, která řídí, jak se animace urychlují nebo zpomalují při jejich spouštění.
Třída Easing definuje řadu funkcí, které je možné využívat animacemi:
- Funkce BounceIn easing odrazí animaci na začátku.
- Funkce BounceOut easing odrazí animaci na konci.
- Funkce CubicIn usnadnění pomalu zrychluje animaci.
- Funkce CubicInOut pro usnadnění zrychluje animaci na začátku a odsudí animaci na konci.
- Funkce CubicOut easing rychle odvolá animaci.
- Linear Funkce easing používá konstantní rychlost a je výchozí funkce pro usnadnění.
- Funkce SinIn usnadnění hladce zrychluje animaci.
- Funkce SinInOut usnadnění hladce zrychluje animaci na začátku a hladce odsune animaci na konci.
- Funkce SinOut usnadnění hladce odvolá animaci.
- Funkce SpringIn easing způsobí, že animace se velmi rychle urychlí směrem ke konci.
- Funkce SpringOut eassing způsobí, že animace se rychle zpomalí směrem ke konci.
Přípony In
a Out
přípony označují, jestli je efekt poskytovaný funkcí easing znatelný na začátku animace, na konci nebo na obou.
Kromě toho je možné vytvářet vlastní funkce pro usnadnění. Další informace najdete v tématu Vlastní funkce pro usnadnění.
Využití funkce pro usnadnění
Metody rozšíření animace ve ViewExtensions třídě umožňují, aby byla funkce easing zadána jako konečný argument metody:
await image.TranslateTo(0, 200, 2000, Easing.BounceIn);
await image.ScaleTo(2, 2000, Easing.CubicIn);
await image.RotateTo(360, 2000, Easing.SinInOut);
await image.ScaleTo(1, 2000, Easing.CubicOut);
await image.TranslateTo(0, -200, 2000, Easing.BounceOut);
Zadáním funkce pro usnadnění animace se rychlost animace změní na nelineární a vytvoří efekt poskytovaný funkcí pro usnadnění. Vynechání funkce pro usnadnění při vytváření animace způsobí, že animace použije výchozí Linear funkci pro usnadnění, která vytváří lineární rychlost.
Další informace o použití animačních rozšiřujících metod ve třídě naleznete v ViewExtensions tématu Základní animace. Easing functions can be consumed by the Animation class. Další informace najdete v tématu Vlastní animace.
Vlastní funkce pro usnadnění
Existují tři hlavní přístupy k vytvoření vlastní funkce pro usnadnění:
- Vytvořte metodu
double
, která přebírá argument a vracídouble
výsledek. - Vytvoření souboru
Func<double, double>
. - Zadejte funkci easing jako argument konstruktoru Easing .
Ve všech třech případech by vlastní funkce easing měla vrátit hodnotu mezi 0 a 1.
Vlastní metoda easingu
Vlastní funkci easing lze definovat jako metodu double
, která přebírá argument a vrací double
výsledek:
double CustomEase (double t)
{
return t == 0 || t == 1 ? t : (int)(5 * t) / 5.0;
}
await image.TranslateTo(0, 200, 2000, (Easing)CustomEase);
V tomto příkladu CustomEase
metoda zkrátí příchozí hodnotu na hodnoty 0, 0,2, 0,4, 0,6, 0,8 a 1. Image Proto je instance přeložena v diskrétních přeskakování, nikoli hladce.
Vlastní ladění func
Vlastní funkci easingu lze také definovat jako Func<double, double>
:
Func<double, double> CustomEaseFunc = t => 9 * t * t * t - 13.5 * t * t + 5.5 * t;
await image.TranslateTo(0, 200, 2000, CustomEaseFunc);
V tomto příkladu CustomEaseFunc
představuje easing funkci, která se spustí rychle, zpomalí a otočí kurz a pak znovu obrátí kurz, aby se rychle zrychlil směrem ke konci. I když je celkový pohyb Image instance směrem dolů, také dočasně obrátí kurz v polovině animace.
Vlastní easing constructor
Vlastní funkci easing lze také definovat jako argument konstruktoru Easing :
await image.TranslateTo(0, 200, 2000, new Easing (t => 1 - Math.Cos (10 * Math.PI * t) * Math.Exp (-5 * t)));
V tomto příkladu je vlastní funkce easing určena jako argument Easing funkce lambda konstruktoru a používá metodu Math.Cos
k vytvoření pomalého poklesu efektu, který je navlhčen metodou Math.Exp
. Proto se instance přeloží tak, Image aby se zdá, že se přeloží na konečnou pozici.