.NET マルチプラットフォーム アプリ UI (.NET MAUI) には Easing クラスが含まれており、アニメーションの実行速度を制御する転送関数を指定できます。
Easing クラスは、アニメーションで使用できるイージング関数の数を定義します。
- BounceInイージング関数は、最初にアニメーションをバウンスします。
- BounceOutイージング関数は、アニメーションを最後にバウンドさせます。
- CubicInイージング関数は、アニメーションをゆっくりと加速します。
- CubicInOutイージング関数は、最初のアニメーションを加速し、最後にアニメーションを減速します。
- CubicOutイージング関数は、アニメーションをすばやく減速します。
- Linearイージング関数は一定の速度を使用し、既定のイージング関数です。
- SinInイージング機能により、アニメーションがスムーズに高速化されます。
- SinInOutイージング機能は、最初のアニメーションをスムーズに加速し、最後にアニメーションをスムーズに減速します。
- SinOutイージング関数は、アニメーションをスムーズに減速します。
- SpringInイージング関数を使用すると、アニメーションは最後に向かって非常に迅速に加速します。
- SpringOutイージング関数を使用すると、アニメーションはすぐに最後に向かって減速します。
InおよびOutサフィックスは、イージング関数によって提供される効果がアニメーションの先頭、末尾、またはその両方で顕著かどうかを示します。
さらに、カスタム イージング関数を作成できます。 詳細については、「 カスタム イージング関数」を参照してください。
イージング関数を使用する
ViewExtensions クラスのアニメーション拡張メソッドを使用すると、イージング関数を最後のメソッド引数として指定できます。
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);
アニメーションにイージング関数を指定すると、アニメーションの速度が非線形になり、イージング関数によって提供される効果が生成されます。 アニメーションを作成するときにイージング関数を省略すると、アニメーションで既定の Linear イージング関数が使用され、線形速度が生成されます。
ViewExtensions クラスでアニメーション拡張メソッドを使用する方法の詳細については、「基本アニメーション」を参照してください。 イージング関数は、 Animation クラスでも使用できます。 詳細については、「 カスタム アニメーション」を参照してください。
カスタム イージング関数
カスタム イージング関数を作成するには、主に次の 3 つの方法があります。
-
double引数を受け取り、double結果を返すメソッドを作成します。 -
Func<double, double>を作成します。 - Easing コンストラクターの引数としてイージング関数を指定します。
3 つのケースすべてで、カスタム イージング関数は 0 から 1 の値を返す必要があります。
カスタム イージングメソッド
カスタム イージング関数は、 double 引数を受け取り、 double 結果を返すメソッドとして定義できます。
double CustomEase (double t)
{
return t == 0 || t == 1 ? t : (int)(5 * t) / 5.0;
}
await image.TranslateTo(0, 200, 2000, (Easing)CustomEase);
この例では、 CustomEase メソッドは、受信値を値 0、0.2、0.4、0.6、0.8、および 1 に切り捨てます。 したがって、 Image インスタンスは、スムーズではなく、個別のジャンプで変換されます。
カスタム イージング関数
カスタム イージング関数は、 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);
この例では、 CustomEaseFunc はイージング関数を表します。この関数は、高速に開始され、速度が遅くなり、コースが逆になり、コースが再び反転されて、最後に向かって迅速に加速されます。 そのため、 Image インスタンスの全体的な動きは下向きですが、アニメーションの途中で一時的にコースが逆になります。
カスタムイージング構築関数
カスタム イージング関数は、 Easing コンストラクターの引数として定義することもできます。
await image.TranslateTo(0, 200, 2000, new Easing (t => 1 - Math.Cos (10 * Math.PI * t) * Math.Exp (-5 * t)));
この例では、カスタム イージング関数は、 Easing コンストラクターのラムダ関数引数として指定され、 Math.Cos メソッドを使用して、 Math.Exp メソッドによって減衰される低速ドロップ効果を作成します。 したがって、 Image インスタンスは、最終的な位置に落ちるように調整されます。
.NET マルチプラットフォーム アプリ UI (.NET MAUI) には Easing クラスが含まれており、アニメーションの実行速度を制御する転送関数を指定できます。
Easing クラスは、アニメーションで使用できるイージング関数の数を定義します。
- BounceInイージング関数は、最初にアニメーションをバウンスします。
- BounceOutイージング関数は、アニメーションに最後にバウンスを与えます。
- CubicInイージング関数は、アニメーションをゆっくりと加速します。
- CubicInOutイージング関数は、最初のアニメーションを加速し、最後にアニメーションを減速します。
- CubicOutイージング関数は、アニメーションをすばやく減速します。
- Linearイージング関数は一定の速度を使用し、既定のイージング関数です。
- SinInイージング機能により、アニメーションがスムーズに高速化されます。
- SinInOutイージング機能は、最初のアニメーションをスムーズに加速し、最後にアニメーションをスムーズに減速します。
- SinOutイージング関数は、アニメーションをスムーズに減速します。
- SpringInイージング関数を使用すると、アニメーションは最後に向かって非常に迅速に加速します。
- SpringOutイージング関数を使用すると、アニメーションはすぐに最後に向かって減速します。
InおよびOutサフィックスは、イージング関数によって提供される効果がアニメーションの先頭、末尾、またはその両方で顕著かどうかを示します。
さらに、カスタム イージング関数を作成できます。 詳細については、「 カスタム イージング関数」を参照してください。
イージング関数を使用する
ViewExtensions クラスのアニメーション拡張メソッドを使用すると、イージング関数を最後のメソッド引数として指定できます。
await image.TranslateToAsync(0, 200, 2000, Easing.BounceIn);
await image.ScaleToAsync(2, 2000, Easing.CubicIn);
await image.RotateToAsync(360, 2000, Easing.SinInOut);
await image.ScaleToAsync(1, 2000, Easing.CubicOut);
await image.TranslateToAsync(0, -200, 2000, Easing.BounceOut);
アニメーションにイージング関数を指定すると、アニメーションの速度が非線形になり、イージング関数によって提供される効果が生成されます。 アニメーションを作成するときにイージング関数を省略すると、アニメーションで既定の Linear イージング関数が使用され、線形速度が生成されます。
ViewExtensions クラスでアニメーション拡張メソッドを使用する方法の詳細については、「基本アニメーション」を参照してください。 イージング関数は、 Animation クラスでも使用できます。 詳細については、「 カスタム アニメーション」を参照してください。
カスタム イージング関数
カスタム イージング関数を作成するには、主に次の 3 つの方法があります。
-
double引数を受け取り、double結果を返すメソッドを作成します。 -
Func<double, double>を作成します。 - Easing コンストラクターの引数としてイージング関数を指定します。
3 つのケースすべてで、カスタム イージング関数は 0 から 1 の値を返す必要があります。
カスタム イージングメソッド
カスタム イージング関数は、 double 引数を受け取り、 double 結果を返すメソッドとして定義できます。
double CustomEase (double t)
{
return t == 0 || t == 1 ? t : (int)(5 * t) / 5.0;
}
await image.TranslateToAsync(0, 200, 2000, (Easing)CustomEase);
この例では、 CustomEase メソッドは、受信値を値 0、0.2、0.4、0.6、0.8、および 1 に切り捨てます。 したがって、 Image インスタンスは、スムーズではなく、個別のジャンプで変換されます。
カスタム イージング関数
カスタム イージング関数は、 Func<double, double>として定義することもできます。
Func<double, double> CustomEaseFunc = t => 9 * t * t * t - 13.5 * t * t + 5.5 * t;
await image.TranslateToAsync(0, 200, 2000, CustomEaseFunc);
この例では、 CustomEaseFunc はイージング関数を表します。この関数は、高速に開始され、速度が遅くなり、コースが逆になり、コースが再び反転されて、最後に向かって迅速に加速されます。 そのため、 Image インスタンスの全体的な動きは下向きですが、アニメーションの途中で一時的にコースが逆になります。
カスタムイージング構築関数
カスタム イージング関数は、 Easing コンストラクターの引数として定義することもできます。
await image.TranslateToAsync(0, 200, 2000, new Easing (t => 1 - Math.Cos (10 * Math.PI * t) * Math.Exp (-5 * t)));
この例では、カスタム イージング関数は、 Easing コンストラクターのラムダ関数引数として指定され、 Math.Cos メソッドを使用して、 Math.Exp メソッドによって減衰される低速ドロップ効果を作成します。 したがって、 Image インスタンスは、最終的な位置に落ちるように調整されます。
.NET MAUI