读取动画变量值

每次应用程序绘制时,它都应读取动画变量的当前值,这些值表示要进行动画处理的视觉特征。

概述

绘制帧时,应用程序可以使用 IUIAnimationVariable::GetValueIUIAnimationVariable::GetIntegerValue 方法请求任何影响帧内视觉对象的动画变量的值。 可以将动画变量剪辑为一系列值, (SetLowerBoundSetUpperBound) ,并使用指定的舍入方案将动画变量 (SetRoundingMode) 请求其值舍入为整数。

而不是读取每个帧的所有变量的值, 应用程序可以使用 IUIAnimationVariable::SetVariableChangeHandlerIUIAnimationVariable::SetVariableIntegerChangeHandler 方法注册一个或多个变量更改处理程序,仅当更改变量的值 (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 动画示例 Timer-Driven Animation 中的 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

            ...

        }
    }

    ...

}

上一步

在开始此步骤之前,应已完成此步骤: 更新动画管理器和绘制帧

下一步

完成此步骤后,下一步是:创建Storyboard并添加转换

IUIAnimationVariable::GetIntegerValue

IUIAnimationVariable::GetValue

Windows动画概述