アニメーション変数を作成する

アプリケーションでは、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
        );

    ...

}

前の手順

この手順を開始する前に、「 メイン アニメーション オブジェクトを作成する」の手順を完了しておく必要があります。

次の手順

この手順を完了した後の次の手順は、 アニメーション マネージャーの更新とフレームの描画です。

IUIAnimationManager::CreateAnimationVariable

IUIAnimationVariable::SetLowerBound

IUIAnimationVariable::SetRoundingMode

IUIAnimationVariable::SetUpperBound

Windows アニメーションの概要