Delen via


Animatievariabelen maken

Een toepassing moet een animatievariabele maken voor elk visueel kenmerk dat geanimeerd moet worden met behulp van Windows-animatie.

Overzicht

Animatievariabelen worden gemaakt met animatiebeheer en de toepassing moet een verwijzing naar elke variabele behouden zolang deze nodig is. In het algemeen maakt uw toepassing elke animatievariabele op hetzelfde moment als het visuele object dat wordt geactiveerd.

Wanneer een animatievariabele wordt gemaakt, moet de oorspronkelijke waarde worden opgegeven. Daarna kan de waarde ervan alleen worden gewijzigd door storyboards te plannen die er animatie aan toevoegen.

Animatievariabelen worden doorgegeven als parameters wanneer storyboards worden samengesteld, dus de toepassing mag ze pas vrijgeven als de visuele kenmerken die ze vertegenwoordigen niet meer hoeven te worden geanimeerd, meestal wanneer de bijbehorende visuele objecten op het punt staan te worden vernietigd.

Voorbeeldcode

Kleuren animeren

De volgende voorbeeldcode is afkomstig uit MainWindow.cpp in de Voorbeelden van Windows-animaties Application-Driven Animatie en Timer-Driven Animatie. In het voorbeeld worden drie animatievariabelen gemaakt met CreateAnimationVariable om achtergrondkleuren weer te geven. De code maakt ook gebruik van de methoden SetLowerBound en SetUpperBound om de waarde van de animatievariabele te beheren.

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

Noteer de volgende definities van MainWindow.h.

class CMainWindow
{

    ...

private:

    // Animated Variables

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

    ...

};

Animatie van x- en y-coördinaten

De volgende voorbeeldcode is afkomstig uit Thumbnail.cpp in het voorbeeld van de indeling Windows-animatie raster; zie de methode CMainWindow::CreateAnimationVariables. Er worden twee animatievariabelen gemaakt om de X- en Y-coördinaten van elk object weer te geven.

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

    ...

}

Noteer de volgende definities van Thumbnail.h.

class CThumbnail
{
public:

    ...

    // X and Y Animation Variables

    IUIAnimationVariable *m_pAnimationVariableX;
    IUIAnimationVariable *m_pAnimationVariableY;

    ...

};

Animatievariabelen zijn drijvendekommagetallen, maar hun waarden kunnen ook worden opgehaald als gehele getallen. Standaard wordt elke waarde afgerond op het dichtstbijzijnde gehele getal, maar het is mogelijk om de afrondingsmodus te overschrijven die wordt gebruikt voor een variabele. In de volgende voorbeeldcode wordt de methode SetRoundingMode gebruikt om op te geven dat de waarden altijd omlaag moeten worden afgerond.

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

    ...

}

Vorige stap

Voordat u met deze stap begint, moet u deze stap hebben voltooid: De hoofdanimatieobjectenmaken.

Volgende stap

Nadat u deze stap hebt voltooid, is de volgende stap: Het animatiebeheer bijwerken en frames tekenen.

IUIAnimationManager::CreateAnimationVariable

IUIAnimationVariable::SetLowerBound

IUIAnimationVariable::SetRoundingMode

IUIAnimationVariable::SetUpperBound

Overzicht van Windows-animaties