애니메이션 변수 만들기
애플리케이션은 Windows 애니메이션을 사용하여 애니메이션할 각 시각적 특성에 대한 애니메이션 변수를 만들어야 합니다.
개요
애니메이션 변수는 애니메이션 관리자를 사용하여 만들어지고 애플리케이션은 필요한 한 각각에 대한 참조를 유지해야 합니다. 애플리케이션은 일반적으로 애니메이션 효과를 주는 시각적 개체와 동시에 각 애니메이션 변수를 만듭니다.
애니메이션 변수를 만들 때 초기 값을 지정해야 합니다. 그 후에는 애니메이션 효과를 주는 스토리보드를 예약해야만 해당 값을 변경할 수 있습니다.
애니메이션 변수는 스토리보드가 생성될 때 매개 변수로 전달되므로 일반적으로 연결된 시각적 개체가 제거될 때 애니메이션 효과를 줄 필요가 없는 시각적 특성이 더 이상 적용되지 않을 때까지 애플리케이션에서 이를 해제하지 않아야 합니다.
코드 예
애니메이션 색
다음 예제 코드는 Windows 애니메이션 샘플 애플리케이션 기반 애니메이션 및 타이머 기반 애니메이션의 MainWindow.cpp에서 가져옵니다. 이 예제에서는 CreateAnimationVariable 을 사용하여 배경색을 나타내는 세 개의 애니메이션 변수를 만듭니다. 또한 이 코드는 SetLowerBound 및 SetUpperBound 메서드를 사용하여 애니메이션 변수의 값을 제어합니다.
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);
}
}
}
}
}
}
}
}
MainWindow.h의 다음 정의를 확인합니다.
class CMainWindow
{
...
private:
// Animated Variables
IUIAnimationVariable *m_pAnimationVariableRed;
IUIAnimationVariable *m_pAnimationVariableGreen;
IUIAnimationVariable *m_pAnimationVariableBlue;
...
};
x 및 y 좌표 애니메이션
다음 예제 코드는 Windows 애니메이션 그리드 레이아웃 샘플의 Thumbnail.cpp에서 가져옵니다. CMainWindow::CreateAnimationVariables 메서드를 참조하세요. 각 개체의 X 및 Y 좌표를 나타내기 위해 두 개의 애니메이션 변수가 만들어집니다.
// 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
);
...
}
Thumbnail.h의 다음 정의를 확인합니다.
class CThumbnail
{
public:
...
// X and Y Animation Variables
IUIAnimationVariable *m_pAnimationVariableX;
IUIAnimationVariable *m_pAnimationVariableY;
...
};
애니메이션 변수는 부동 소수점 숫자이지만 해당 값도 정수로 가져올 수 있습니다. 기본적으로 각 값은 가장 가까운 정수로 반올림되지만 변수에 사용되는 반올림 모드를 재정의할 수 있습니다. 다음 예제 코드는 SetRoundingMode 메서드를 사용하여 값을 항상 반올림하도록 지정합니다.
hr = m_pAnimationVariableX->SetRoundingMode(
UI_ANIMATION_ROUNDING_MODE_FLOOR
);
if (SUCCEEDED(hr))
{
hr = m_pAnimationVariableY->SetRoundingMode(
UI_ANIMATION_ROUNDING_MODE_FLOOR
);
...
}
이전 단계
이 단계를 시작하기 전에 기본 애니메이션 개체 만들기 단계를 완료해야 합니다.
다음 단계
이 단계를 완료한 후 다음 단계는 애니메이션 관리자 업데이트 및 프레임 그리기입니다.
관련 항목