Criar variáveis de animação
Um aplicativo deve criar uma variável de animação para cada característica visual que deve ser animada usando a Animação do Windows.
Visão geral
As variáveis de animação são criadas usando o gerenciador de animação e o aplicativo deve manter uma referência a cada uma pelo tempo que for necessário. Seu aplicativo geralmente criará cada variável de animação ao mesmo tempo que o objeto visual que ele anima.
Quando uma variável de animação é criada, seu valor inicial deve ser especificado. Depois disso, seu valor só pode ser alterado agendando storyboards que o animam.
As variáveis de animação são passadas como parâmetros quando os storyboards são construídos, portanto, o aplicativo não deve liberá-las até que as características visuais que representam não precisem mais ser animadas, normalmente quando os objetos visuais associados estão prestes a ser destruídos.
Código de exemplo
Animando cores
O código de exemplo a seguir é obtido de MainWindow.cpp nos exemplos de Animação controlada por aplicativo e animação controlada por temporizador. No exemplo, três variáveis de animação são criadas usando CreateAnimationVariable para representar cores de tela de fundo. O código também usa os métodos SetLowerBound e SetUpperBound para controlar o valor da variável de animação.
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);
}
}
}
}
}
}
}
}
Observe as definições a seguir de MainWindow.h.
class CMainWindow
{
...
private:
// Animated Variables
IUIAnimationVariable *m_pAnimationVariableRed;
IUIAnimationVariable *m_pAnimationVariableGreen;
IUIAnimationVariable *m_pAnimationVariableBlue;
...
};
Animando coordenadas x e y
O código de exemplo a seguir é obtido de Thumbnail.cpp no Exemplo de Layout da Grade de Animação do Windows; consulte o método CMainWindow::CreateAnimationVariables. Duas variáveis de animação são criadas para representar as coordenadas X e Y de cada objeto.
// 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
);
...
}
Observe as definições a seguir de Thumbnail.h.
class CThumbnail
{
public:
...
// X and Y Animation Variables
IUIAnimationVariable *m_pAnimationVariableX;
IUIAnimationVariable *m_pAnimationVariableY;
...
};
Variáveis de animação são números de ponto flutuante, mas seus valores também podem ser buscados como inteiros. Por padrão, cada valor será arredondado para o inteiro mais próximo, mas é possível substituir o modo de arredondamento usado para uma variável. O código de exemplo a seguir usa o método SetRoundingMode para especificar que os valores sempre devem ser arredondados para baixo.
hr = m_pAnimationVariableX->SetRoundingMode(
UI_ANIMATION_ROUNDING_MODE_FLOOR
);
if (SUCCEEDED(hr))
{
hr = m_pAnimationVariableY->SetRoundingMode(
UI_ANIMATION_ROUNDING_MODE_FLOOR
);
...
}
Etapa anterior
Antes de iniciar esta etapa, você deve ter concluído esta etapa: Criar os Principais Objetos de Animação.
Próxima etapa
Depois de concluir esta etapa, a próxima etapa é: Atualizar o Gerenciador de Animação e Desenhar Quadros.
Tópicos relacionados