Compartir a través de


Crear variables de animación

Una aplicación debe crear una variable de animación para cada característica visual que se va a animar mediante la animación de Windows.

Información general

Las variables de animación se crean mediante el administrador de animaciones y la aplicación debe conservar una referencia a cada una de ellas siempre y cuando sea necesario. Por lo general, la aplicación creará cada variable de animación al mismo tiempo que el objeto visual que anima.

Cuando se crea una variable de animación, se debe especificar su valor inicial. A partir de entonces, su valor solo se puede modificar mediante la programación de guiones gráficos que lo animan.

Las variables de animación se pasan como parámetros cuando se construyen guiones gráficos, por lo que la aplicación no debe liberarlas hasta que las características visuales que representan ya no necesitan animarse, normalmente cuando los objetos visuales asociados están a punto de destruirse.

Código de ejemplo

Animar colores

El código de ejemplo siguiente se toma de MainWindow.cpp en los ejemplos de animación de Windows Animación controlada por aplicaciones y Animación controlada por temporizador. En el ejemplo, se crean tres variables de animación mediante CreateAnimationVariable para representar colores de fondo. El código también usa los métodos SetLowerBound y SetUpperBound para controlar el valor de la variable de animación.

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);
                            }
                        }
                    }
                }
            }
        }
    }
}

Tenga en cuenta las siguientes definiciones de MainWindow.h.

class CMainWindow
{

    ...

private:

    // Animated Variables

    IUIAnimationVariable *m_pAnimationVariableRed;
    IUIAnimationVariable *m_pAnimationVariableGreen;
    IUIAnimationVariable *m_pAnimationVariableBlue;

    ...

};

Animar coordenadas x e y

El siguiente código de ejemplo se toma de Thumbnail.cpp en el Ejemplo de diseño de cuadrícula de animación de Windows; vea el método CMainWindow::CreateAnimationVariables. Se crean dos variables de animación para representar las coordenadas X e Y de cada objeto.

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

    ...

}

Tenga en cuenta las siguientes definiciones de Thumbnail.h.

class CThumbnail
{
public:

    ...

    // X and Y Animation Variables

    IUIAnimationVariable *m_pAnimationVariableX;
    IUIAnimationVariable *m_pAnimationVariableY;

    ...

};

Las variables de animación son números de punto flotante, pero sus valores también se pueden capturar como enteros. De forma predeterminada, cada valor se redondeará al entero más cercano, pero es posible invalidar el modo de redondeo usado para una variable. En el código de ejemplo siguiente se usa el método SetRoundingMode para especificar que los valores siempre deben redondearse hacia abajo.

hr = m_pAnimationVariableX->SetRoundingMode(
    UI_ANIMATION_ROUNDING_MODE_FLOOR
    );
if (SUCCEEDED(hr))
{
    hr = m_pAnimationVariableY->SetRoundingMode(
        UI_ANIMATION_ROUNDING_MODE_FLOOR
        );

    ...

}

Paso anterior

Antes de comenzar este paso, debe haber completado este paso: Crear los objetos de animación principales.

siguiente paso

Después de completar este paso, el siguiente paso es: Actualizar el Administrador de animaciones y dibujar fotogramas.

IUIAnimationManager::CreateAnimationVariable

IUIAnimationVariable::SetLowerBound

IUIAnimationVariable::SetRoundingMode

IUIAnimationVariable::SetUpperBound

Información general sobre la animación de Windows