Creare variabili di animazione

Un'applicazione deve creare una variabile di animazione per ogni caratteristica visiva che deve essere animata usando l'animazione di Windows.

Panoramica

Le variabili di animazione vengono create usando la gestione animazioni e l'applicazione deve conservare un riferimento a ognuno per tutto il tempo necessario. L'applicazione creerà in genere ogni variabile di animazione contemporaneamente all'oggetto visivo che anima.

Quando viene creata una variabile di animazione, è necessario specificare il valore iniziale. Successivamente, il relativo valore può essere modificato solo pianificando storyboard che lo animano.

Le variabili di animazione vengono passate come parametri quando gli storyboard vengono costruiti, quindi l'applicazione non deve rilasciarle finché le caratteristiche visive che rappresentano non devono più essere animate, in genere quando gli oggetti visivi associati stanno per essere eliminati definitivamente.

Codice di esempio

Animazione dei colori

Il codice di esempio seguente è tratto da MainWindow.cpp negli esempi di animazione windows Animazione guidata dall'applicazione e Animazione basata su timer. Nell'esempio vengono create tre variabili di animazione usando CreateAnimationVariable per rappresentare i colori di sfondo. Il codice usa anche i metodi SetLowerBound e SetUpperBound per controllare il valore della variabile di animazione.

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

Si notino le definizioni seguenti di MainWindow.h.

class CMainWindow
{

    ...

private:

    // Animated Variables

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

    ...

};

Animazione di coordinate x e y

Il codice di esempio seguente è tratto da Thumbnail.cpp nell'esempio di layout griglia di animazione di Windows; vedere il metodo CMainWindow::CreateAnimationVariables. Vengono create due variabili di animazione per rappresentare le coordinate X e Y di ogni oggetto.

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

    ...

}

Si notino le definizioni seguenti di Thumbnail.h.

class CThumbnail
{
public:

    ...

    // X and Y Animation Variables

    IUIAnimationVariable *m_pAnimationVariableX;
    IUIAnimationVariable *m_pAnimationVariableY;

    ...

};

Le variabili di animazione sono numeri a virgola mobile, ma anche i relativi valori possono essere recuperati come numeri interi. Per impostazione predefinita, ogni valore verrà arrotondato all'intero più vicino, ma è possibile eseguire l'override della modalità di arrotondamento usata per una variabile. Il codice di esempio seguente usa il metodo SetRoundingMode per specificare che i valori devono essere sempre arrotondati per difetto.

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

    ...

}

Passaggio precedente

Prima di iniziare questo passaggio, è necessario aver completato questo passaggio: Creare gli oggetti animazione principale.

passaggio successivo

Dopo aver completato questo passaggio, il passaggio successivo è: Aggiornare Gestione animazioni e Disegnare fotogrammi.

IUIAnimationManager::CreateAnimationVariable

IUIAnimationVariable::SetLowerBound

IUIAnimationVariable::SetRoundingMode

IUIAnimationVariable::SetUpperBound

Panoramica dell'animazione di Windows