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.
Argomenti correlati