アニメーション変数を作成する
アプリケーションでは、Windows アニメーションを使用してアニメーション化するビジュアル特性ごとにアニメーション変数を作成する必要があります。
概要
アニメーション変数はアニメーション マネージャーを使用して作成されます。アプリケーションは、必要な限り、それぞれに対する参照を保持する必要があります。 通常、アプリケーションはアニメーション化するビジュアル オブジェクトと同時に各アニメーション変数を作成します。
アニメーション変数を作成するときは、その初期値を指定する必要があります。 その後、その値は、それをアニメーション化するストーリーボードをスケジュールすることによってのみ変更できます。
アニメーション変数はストーリーボードの作成時にパラメーターとして渡されるため、アプリケーションは、それらが表す視覚的特性をアニメーション化する必要がなくなるまで解放しないでください。通常は、関連付けられたビジュアル オブジェクトが破棄されようとしている場合です。
コード例
色のアニメーション化
次のコード例は、Windows アニメーション のサンプル アプリケーション駆動型アニメーション と タイマー駆動型アニメーションの MainWindow.cpp から取得したものです。 この例では、 CreateAnimationVariable を使用して背景色を表す 3 つのアニメーション変数を作成しています。 また、このコードでは 、SetLowerBound メソッドと SetUpperBound メソッドを使用して、アニメーション変数の値を制御します。
const DOUBLE INITIAL_RED = COLOR_MAX;
const DOUBLE INITIAL_GREEN = COLOR_MAX;
const DOUBLE INITIAL_BLUE = COLOR_MAX;
HRESULT hr = m_pAnimationManager->CreateAnimationVariable(
INITIAL_RED,
&m_pAnimationVariableRed
);
if (SUCCEEDED(hr))
{
hr = m_pAnimationVariableRed->SetLowerBound(COLOR_MIN);
if (SUCCEEDED(hr))
{
hr = m_pAnimationVariableRed->SetUpperBound(COLOR_MAX);
if (SUCCEEDED(hr))
{
hr = m_pAnimationManager->CreateAnimationVariable(
INITIAL_GREEN,
&m_pAnimationVariableGreen
);
if (SUCCEEDED(hr))
{
hr = m_pAnimationVariableGreen->SetLowerBound(COLOR_MIN);
if (SUCCEEDED(hr))
{
hr = m_pAnimationVariableGreen->SetUpperBound(COLOR_MAX);
if (SUCCEEDED(hr))
{
hr = m_pAnimationManager->CreateAnimationVariable(
INITIAL_BLUE,
&m_pAnimationVariableBlue
);
if (SUCCEEDED(hr))
{
hr = m_pAnimationVariableBlue->SetLowerBound(COLOR_MIN);
if (SUCCEEDED(hr))
{
hr = m_pAnimationVariableBlue->SetUpperBound(COLOR_MAX);
}
}
}
}
}
}
}
}
MainWindow.h の次の定義に注意してください。
class CMainWindow
{
...
private:
// Animated Variables
IUIAnimationVariable *m_pAnimationVariableRed;
IUIAnimationVariable *m_pAnimationVariableGreen;
IUIAnimationVariable *m_pAnimationVariableBlue;
...
};
x 座標と y 座標のアニメーション化
次のコード例は、Windows アニメーション グリッド レイアウト サンプルの Thumbnail.cpp から取得されています。CMainWindow::CreateAnimationVariables メソッドを参照してください。 各オブジェクトの X 座標と Y 座標を表す 2 つのアニメーション変数が作成されます。
// Create the animation variables for the x and y coordinates
hr = m_pAnimationManager->CreateAnimationVariable(
xInitial,
&m_pAnimationVariableX
);
if (SUCCEEDED(hr))
{
hr = m_pAnimationManager->CreateAnimationVariable(
yInitial,
&m_pAnimationVariableY
);
...
}
Thumbnail.h の次の定義に注意してください。
class CThumbnail
{
public:
...
// X and Y Animation Variables
IUIAnimationVariable *m_pAnimationVariableX;
IUIAnimationVariable *m_pAnimationVariableY;
...
};
アニメーション変数は浮動小数点数ですが、その値は整数としてフェッチすることもできます。 既定では、各値は最も近い整数に丸められますが、変数に使用される丸めモードをオーバーライドできます。 次のコード例では 、SetRoundingMode メソッドを 使用して、値を常に切り捨てる必要があることを指定します。
hr = m_pAnimationVariableX->SetRoundingMode(
UI_ANIMATION_ROUNDING_MODE_FLOOR
);
if (SUCCEEDED(hr))
{
hr = m_pAnimationVariableY->SetRoundingMode(
UI_ANIMATION_ROUNDING_MODE_FLOOR
);
...
}
前の手順
この手順を開始する前に、「 メイン アニメーション オブジェクトを作成する」の手順を完了しておく必要があります。
次の手順
この手順を完了した後の次の手順は、 アニメーション マネージャーの更新とフレームの描画です。
関連トピック