Condividi tramite


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 in genere creerà ogni variabile di animazione contemporaneamente all'oggetto visivo animato.

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

Le variabili di animazione vengono passate come parametri quando vengono costruiti gli storyboard, quindi l'applicazione non deve rilasciarle fino a quando 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 di Windows Application-Driven animation e Timer-Driven Animation. Nell'esempio vengono create tre variabili di animazione usando CreateAnimationVariable per rappresentare i colori di sfondo. Il codice usa anche i metodiSetLowerBounde 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);
                            }
                        }
                    }
                }
            }
        }
    }
}

Prendere nota delle definizioni seguenti da 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 a 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 i relativi valori possono essere recuperati anche 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 verso il basso.

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 di animazione principali.

Passaggio successivo

Dopo aver completato questo passaggio, il passaggio successivo è: Aggiornare il Gestore delle Animazioni e Disegnare i Fotogrammi.

IUIAnimationManager::CreateAnimationVariable

IUIAnimationVariable::SetLowerBound

IUIAnimationVariable::SetRoundingMode

IUIAnimationVariable::SetUpperBound

Panoramica dell'animazione di Windows