次の方法で共有


アニメーション変数の値を読み取る

アプリケーションが描画されるたびに、アニメーション化する視覚特性を表すアニメーション変数の現在の値を読み取る必要があります。

概要

フレームを描画するときに、アプリケーションは IUIAnimationVariable::GetValue メソッドまたは IUIAnimationVariable::GetIntegerValue メソッドを使用して、フレーム内のビジュアルに影響を与えるアニメーション変数の値を要求できます。 アニメーション変数を値の範囲 (SetLowerBoundSetUpperBound) にクリップし、指定した丸めスキーム (SetRoundingMode) を使用して値を整数に丸めることができます。

フレームごとにすべての変数の値を読み取る代わりに、 アプリケーションでは 、IUIAnimationVariable::SetVariableChangeHandler メソッドまたは IUIAnimationVariable::SetVariableIntegerChangeHandler メソッドを使用して、1 つ以上の変数変更ハンドラーを登録し、通知を受信する場合にのみ通知を受け取ることができます 変数の値 (IUIAnimationVariableChangeHandler::OnValueChanged) または丸められた値 (IUIAnimationVariableIntegerChangeHandler::OnIntegerValueChanged) に変更があります). 変数変更ハンドラーに渡される変数を識別するために、アプリケーションは IUIAnimationVariable::SetTag メソッドを使用して変数にタグを適用できます。 これらは、アプリケーションによって解釈されるオブジェクト (IUnknown*) の整数ペアです。

コード例

次のコード例は、Windows アニメーションサンプル のグリッド レイアウトの Thumbnail.cpp から取得したものです。CMainWindow::Render メソッドを参照してください。 GetValue メソッドを使用して、値を浮動小数点値として読み取ります。

// Get the x-coordinate and y-coordinate animation variable values

DOUBLE x=0;
hr = m_pAnimationVariableX->GetValue(&x);
if (SUCCEEDED(hr))
{
    DOUBLE y=0;
    hr = m_pAnimationVariableY->GetValue(&y);
    if (SUCCEEDED(hr))
    {
        // Draw the object

        ...

    }
}

次のコード例は、Windows アニメーションサンプル のタイマー駆動型アニメーションの MainWindow.cpp から取得したものです。CMainWindow::D rawBackground メソッドを参照してください。 GetIntegerValue メソッドを使用して、値を整数値として読み取ります。

// Get the RGB animation variable values

INT32 red;
HRESULT hr = m_pAnimationVariableRed->GetIntegerValue(
    &red
    );
if (SUCCEEDED(hr))
{
    INT32 green;
    hr = m_pAnimationVariableGreen->GetIntegerValue(
        &green
        );
    if (SUCCEEDED(hr))
    {
        INT32 blue;
        hr = m_pAnimationVariableBlue->GetIntegerValue(
            &blue
            );
        if (SUCCEEDED(hr))
        {
            // Set the RGB of the background brush to the new animated value

            ...
                
            // Paint the background

            ...

        }
    }

    ...

}

前の手順

この手順を開始する前に、 アニメーション マネージャーの更新とフレームの描画の手順を完了している必要があります。

次の手順

この手順を完了したら、次の手順は ストーリーボードの作成と画面切り替えの追加です

IUIAnimationVariable::GetIntegerValue

IUIAnimationVariable::GetValue

Windows アニメーションの概要