Compartir a través de


Leer los valores de las variables de animación

Cada vez que la aplicación pinta, debe leer los valores actuales de las variables de animación que representan las características visuales que se van a animar.

Información general

Al dibujar un fotograma, una aplicación puede usar el método IUIAnimationVariable::GetValue o IUIAnimationVariable::GetIntegerValue para solicitar los valores de cualquier variable de animación que afecte a los objetos visuales dentro del fotograma. Es posible recortar una variable de animación a un intervalo de valores (SetLowerBound y SetUpperBound) y solicitar que su valor se redondee a un entero mediante un esquema de redondeo especificado (SetRoundingMode).

En lugar de leer los valores de todas las variables para cada fotograma, Una aplicación puede usar el método IUIAnimationVariable::SetVariableChangeHandler o IUIAnimationVariable::SetVariableIntegerChangeHandler para registrar uno o varios controladores de cambios variables para recibir notificaciones solo cuando hay un cambio en el valor de las variables (IUIAnimationVariableChangeHandler::OnValueChanged) o el valor redondeado (IUIAnimationVariableIntegerChangeHandler::OnIntegerValueChanged) o el valor redondeado (IUIAnimationVariableIntegerChangeHandler::OnIntegerValueChanged) ). Para identificar las variables que se pasan a los controladores de cambios de variables, una aplicación puede aplicar etiquetas a variables mediante el método IUIAnimationVariable::SetTag . Son pares enteros (IUnknown*), que interpreta la aplicación.

Código de ejemplo

El siguiente código de ejemplo se toma de Thumbnail.cpp en el diseño de cuadrícula de ejemplo de animación de Windows; vea el método CMainWindow::Render. Usa el método GetValue para leer los valores como valores de punto flotante.

// 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

        ...

    }
}

El código de ejemplo siguiente se toma de MainWindow.cpp en la animación de ejemplo de animación de Windows Animación Animación controlada por temporizador; vea el método CMainWindow::D rawBackground. Usa el método GetIntegerValue para leer los valores como valores enteros.

// 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

            ...

        }
    }

    ...

}

Paso anterior

Antes de comenzar este paso, debe haber completado este paso: Actualizar el Administrador de animaciones y dibujar fotogramas.

siguiente paso

Después de completar este paso, el siguiente paso es: Crear un guión gráfico y Agregar transiciones.

IUIAnimationVariable::GetIntegerValue

IUIAnimationVariable::GetValue

Información general sobre animaciones de Windows