Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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
- animatie van x- en y-coördinaten
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.
Verwante onderwerpen