IUIAnimationTransitionLibrary
COM公式ドキュメント
標準の遷移(トランジション)のライブラリを定義します。
解説(Remarks)
Windows Animation には、開発者がストーリーボードを通じて変数に適用できる一般的な遷移のライブラリが用意されています。遷移を指定するためのパラメーターは、遷移の種類によって異なります。一部の遷移では遷移の継続時間が明示的なパラメーターとなりますが、それ以外の遷移では、遷移開始時の速度や加速度などの他のパラメーターによって継続時間が決まります。不連続なジャンプが必要な場合は、遷移の初期値や初期速度を上書きできます。また、遷移をストーリーボードに追加した後で継続時間を照会できます。
遷移ライブラリでは指定できない効果がアプリケーションで必要な場合、開発者はカスタム遷移を実装できます。カスタム遷移を作成するには、まず遷移用の補間器関数を実装し、次にファクトリオブジェクトを使用して補間器から遷移を生成します。補間器は IUIAnimationInterpolator インターフェイスを実装する必要があります。遷移ファクトリオブジェクトの実装は UIAnimationTransitionFactory によって提供されます。
例
遷移ライブラリオブジェクトを作成する例については、Create the Main Animation Objects を参照してください。
メソッド 12
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
瞬間的な遷移を作成します。
| finalValue | DOUBLE | in | 遷移の終了時におけるアニメーション変数の値。 |
| transition | IUIAnimationTransition** | out | 新しい瞬間的な遷移。 |
戻り値
メソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。エラーコードの一覧については、Windows Animation Error Codes を参照してください。
解説(Remarks)
瞬間的な遷移では、 アニメーション変数の値が現在の値から指定された最終値へ瞬時に変化します。この遷移の継続時間は常にゼロです。
次の図は、瞬間的な遷移における時間経過に伴うアニメーション変数への効果を示しています。

一定値の遷移を作成します。
| duration | DOUBLE | in | 遷移の継続時間。 |
| transition | IUIAnimationTransition** | out | 新しい一定値の遷移。 |
戻り値
メソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。エラーコードの一覧については、Windows Animation Error Codes を参照してください。
解説(Remarks)
一定値の遷移では、遷移の継続時間の間、アニメーション変数の値は初期値のまま保たれます。
次の図は、一定継続時間の遷移における時間経過に伴うアニメーション変数への効果を示しています。

離散的な遷移を作成します。
| delay | DOUBLE | in | 最終値への瞬間的な切り替えを遅延させる時間。 |
| finalValue | DOUBLE | in | 遷移の終了時におけるアニメーション変数の値。 |
| hold | DOUBLE | in | 変数を最終値に保持する時間。 |
| transition | IUIAnimationTransition** | out | 新しい離散的な遷移。 |
戻り値
メソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。エラーコードの一覧については、Windows Animation Error Codes を参照してください。
解説(Remarks)
離散的な遷移では、アニメーション変数は指定された遅延時間の間は初期値のまま保たれ、その後、指定された最終値へ瞬時に切り替わり、指定された保持時間の間その値を維持します。
次の図は、離散的な遷移における時間経過に伴うアニメーション変数への効果を示しています。

線形の遷移を作成します。
| duration | DOUBLE | in | 遷移の継続時間。 |
| finalValue | DOUBLE | in | 遷移の終了時におけるアニメーション変数の値。 |
| transition | IUIAnimationTransition** | out | 新しい線形の遷移。 |
戻り値
メソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。エラーコードの一覧については、Windows Animation Error Codes を参照してください。
解説(Remarks)
線形の遷移では、アニメーション変数の値が初期値から指定された最終値まで線形に変化します。
次の図は、線形の遷移における時間経過に伴うアニメーション変数への効果を示しています。

線形速度の遷移を作成します。
| speed | DOUBLE | in | 速度の絶対値。 |
| finalValue | DOUBLE | in | 遷移の終了時におけるアニメーション変数の値。 |
| transition | IUIAnimationTransition** | out | 新しい線形速度の遷移。 |
戻り値
メソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。エラーコードの一覧については、Windows Animation Error Codes を参照してください。
解説(Remarks)
線形速度の遷移では、アニメーション変数の値が指定された割合で変化します。遷移の継続時間は、初期値と指定された最終値との差によって決まります。
次の図は、線形速度の遷移における時間経過に伴うアニメーション変数への効果を示しています。

初期速度によって振幅が決まる、正弦波速度の遷移を作成します。
| duration | DOUBLE | in | 遷移の継続時間。 |
| period | DOUBLE | in | 正弦波の振動周期(秒単位)。 |
| transition | IUIAnimationTransition** | out | 新しい正弦波速度の遷移。 |
戻り値
メソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。エラーコードの一覧については、Windows Animation Error Codes を参照してください。
解説(Remarks)
正弦波範囲の遷移では、遷移の継続時間全体を通じて、アニメーション変数の値が初期値の周りで振動します。振動の振幅は、遷移開始時の速度によって決まります。
次の図は、正弦波速度の遷移における時間経過に伴うアニメーション変数への効果を示しています。

指定された振動範囲を持つ、正弦波範囲の遷移を作成します。
| duration | DOUBLE | in | 遷移の継続時間。 |
| minimumValue | DOUBLE | in | 正弦波の谷におけるアニメーション変数の値。 |
| maximumValue | DOUBLE | in | 正弦波の山におけるアニメーション変数の値。 |
| period | DOUBLE | in | 正弦波の振動周期(秒単位)。 |
| slope | UI_ANIMATION_SLOPE | in | 遷移開始時の傾き。 |
| transition | IUIAnimationTransition** | out | 新しい正弦波範囲の遷移。 |
戻り値
メソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。エラーコードの一覧については、Windows Animation Error Codes を参照してください。
解説(Remarks)
正弦波範囲の遷移では、遷移の継続時間全体を通じて、アニメーション変数の値が指定された最小値と最大値の間で変動します。slope パラメーターは、その他のパラメーターによって定まる 2 つの正弦波のどちらであるかを区別するために使用されます。
次の図は、正弦波範囲の遷移における時間経過に伴うアニメーション変数への効果を示しています。UI_ANIMATION_SLOPE_INCREASING 列挙値を渡すと図中の実線のような波形になり、UI_ANIMATION_SLOPE_DECREASING 値を渡すと破線のような波形になります。

加速減速の遷移を作成します。
| duration | DOUBLE | in | 遷移の継続時間。 |
| finalValue | DOUBLE | in | 遷移の終了時におけるアニメーション変数の値。 |
| accelerationRatio | DOUBLE | in | 継続時間に対する加速に費やす時間の比率。 |
| decelerationRatio | DOUBLE | in | 継続時間に対する減速に費やす時間の比率。 |
| transition | IUIAnimationTransition** | out | 新しい加速減速の遷移。 |
戻り値
メソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。エラーコードの一覧については、Windows Animation Error Codes を参照してください。
解説(Remarks)
加速減速の遷移では、アニメーション変数は 遷移の継続時間の間に加速し、その後減速して、指定された値で終了します。加速の比率と減速の比率を別々に指定することで、変数が加速および減速する速さをそれぞれ制御できます。
初期速度がゼロの場合、加速比率は変数が加速に費やす継続時間の割合となります。減速比率も同様です。初期速度がゼロでない場合は、速度がゼロに達してから遷移が終了するまでの時間に対する割合となります。加速比率と減速比率の合計は最大でも 1.0 とする必要があります。
次の図は、加速減速の遷移における、初期速度が異なるアニメーション変数への効果を示しています。
例
例については、Create a Storyboard and Add Transitions を参照してください。
反転の遷移を作成します。
| duration | DOUBLE | in | 遷移の継続時間。 |
| transition | IUIAnimationTransition** | out | 新しい反転の遷移。 |
戻り値
メソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。エラーコードの一覧については、Windows Animation Error Codes を参照してください。
解説(Remarks)
反転の遷移では、指定された継続時間の間に滑らかに方向が変わります。最終値は初期値と同じになり、最終速度は初期速度の符号を反転した値になります。次の図はそのような反転の遷移を示しています。

3 次(キュービック)の遷移を作成します。
| duration | DOUBLE | in | 遷移の継続時間。 |
| finalValue | DOUBLE | in | 遷移の終了時におけるアニメーション変数の値。 |
| finalVelocity | DOUBLE | in | 遷移の終了時における変数の速度。 |
| transition | IUIAnimationTransition** | out | 新しい 3 次の遷移。 |
戻り値
メソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。エラーコードの一覧については、Windows Animation Error Codes を参照してください。
解説(Remarks)
3 次の遷移では、遷移の継続時間の間にアニメーション変数の値が初期値から指定された最終値へ変化し、指定された速度で終了します。
次の図は、3 次の遷移における時間経過に伴うアニメーション変数への効果を示しています。

スムーズストップの遷移を作成します。
| maximumDuration | DOUBLE | in | 遷移の最大継続時間。 |
| finalValue | DOUBLE | in | 遷移の終了時におけるアニメーション変数の値。 |
| transition | IUIAnimationTransition** | out | 新しいスムーズストップの遷移。 |
戻り値
メソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。エラーコードの一覧については、Windows Animation Error Codes を参照してください。
解説(Remarks)
スムーズストップの遷移では、指定された最終値に近づくにつれて減速し、速度ゼロで最終値に到達します。遷移の継続時間は、初期速度、初期値と最終値の差、および指定された最大継続時間によって決まります。単一の放物線の弧で構成される解が存在しない場合、このメソッドは 3 次の遷移を作成します。
次の図は、スムーズストップの遷移における時間経過に伴うアニメーション変数への効果を示しています。

放物線加速の遷移を作成します。
| finalValue | DOUBLE | in | 遷移の終了時におけるアニメーション変数の値。 |
| finalVelocity | DOUBLE | in | 遷移の終了時における速度。 |
| acceleration | DOUBLE | in | 遷移中の加速度。 |
| transition | IUIAnimationTransition** | out | 新しい放物線加速の遷移。 |
戻り値
メソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。エラーコードの一覧については、Windows Animation Error Codes を参照してください。
解説(Remarks)
放物線加速の遷移では、アニメーション変数の値が初期値から最終値へ変化し、指定された速度で終了します。加速度を指定することで、変数が最終値に到達する速さを制御できます。
次の図は、放物線加速の遷移における時間経過に伴うアニメーション変数への効果を示しています。

Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IUIAnimationTransitionLibrary "{CA5A14B1-D24F-48B8-8FE4-C78169BA954E}"
#usecom global IUIAnimationTransitionLibrary IID_IUIAnimationTransitionLibrary "{1D6322AD-AA85-4EF5-A828-86D71067D145}"
#comfunc global IUIAnimationTransitionLibrary_CreateInstantaneousTransition 3 double,sptr
#comfunc global IUIAnimationTransitionLibrary_CreateConstantTransition 4 double,sptr
#comfunc global IUIAnimationTransitionLibrary_CreateDiscreteTransition 5 double,double,double,sptr
#comfunc global IUIAnimationTransitionLibrary_CreateLinearTransition 6 double,double,sptr
#comfunc global IUIAnimationTransitionLibrary_CreateLinearTransitionFromSpeed 7 double,double,sptr
#comfunc global IUIAnimationTransitionLibrary_CreateSinusoidalTransitionFromVelocity 8 double,double,sptr
#comfunc global IUIAnimationTransitionLibrary_CreateSinusoidalTransitionFromRange 9 double,double,double,double,int,sptr
#comfunc global IUIAnimationTransitionLibrary_CreateAccelerateDecelerateTransition 10 double,double,double,double,sptr
#comfunc global IUIAnimationTransitionLibrary_CreateReversalTransition 11 double,sptr
#comfunc global IUIAnimationTransitionLibrary_CreateCubicTransition 12 double,double,double,sptr
#comfunc global IUIAnimationTransitionLibrary_CreateSmoothStopTransition 13 double,double,sptr
#comfunc global IUIAnimationTransitionLibrary_CreateParabolicTransitionFromAcceleration 14 double,double,double,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。