若要建立動畫,應用程式必須建構分鏡腳本。
概述
建構分鏡腳本的一般步驟如下:
- 建立分鏡腳本
- 建立一或多個過渡效果
- 將過渡效果新增至分鏡腳本,並指定動畫變化的變數
您可以使用動畫管理工具建立空的分鏡腳本。 應用程式必須填入每個分鏡腳本的過渡效果。 每個轉換都會指定單一動畫變數在指定時間間隔中的變更方式。 您可以使用 Windows 動畫中包含的轉換連結庫元件來建立轉換。 或者,應用程式可以建立自己的自定義轉換,或使用來自第三方的轉換連結庫。 當應用程式將過渡新增到分鏡腳本時,它會指定過渡將會動畫化的動畫變數。
分鏡腳本可能包含一或多個動畫變數的轉換。 更複雜的分鏡腳本可以使用關鍵畫格來同步轉換的開始或結束,或指定應被重複的分鏡腳本部分(固定次數或持續重複)。
範例程序代碼
下列範例程式代碼取自 Windows 動畫範例中的MainWindow.cpp,Timer-Driven 動畫;請參閱 CMainWindow::ChangeColor 方法。 此範例會使用 IUIAnimationManager::CreateStoryboard 方法建立分鏡腳本 (步驟 1) 使用 IUIAnimationTransitionLibrary::CreateAccelerateDecelerateTransition 方法建立轉換 (步驟 2),並使用 IUIAnimationStoryboard::AddTransition 方法,將轉換新增至分鏡腳本 (步驟 3)。
const UI_ANIMATION_SECONDS DURATION = 0.5;
const DOUBLE ACCELERATION_RATIO = 0.5;
const DOUBLE DECELERATION_RATIO = 0.5;
// Create a storyboard
IUIAnimationStoryboard *pStoryboard = NULL;
HRESULT hr = m_pAnimationManager->CreateStoryboard(
&pStoryboard
);
if (SUCCEEDED(hr))
{
// Create transitions for the RGB animation variables
IUIAnimationTransition *pTransitionRed;
hr = m_pTransitionLibrary->CreateAccelerateDecelerateTransition(
DURATION,
red,
ACCELERATION_RATIO,
DECELERATION_RATIO,
&pTransitionRed
);
if (SUCCEEDED(hr))
{
IUIAnimationTransition *pTransitionGreen;
hr = m_pTransitionLibrary->CreateAccelerateDecelerateTransition(
DURATION,
green,
ACCELERATION_RATIO,
DECELERATION_RATIO,
&pTransitionGreen
);
if (SUCCEEDED(hr))
{
IUIAnimationTransition *pTransitionBlue;
hr = m_pTransitionLibrary->CreateAccelerateDecelerateTransition(
DURATION,
blue,
ACCELERATION_RATIO,
DECELERATION_RATIO,
&pTransitionBlue
);
if (SUCCEEDED(hr))
{
// Add transitions to the storyboard
hr = pStoryboard->AddTransition(
m_pAnimationVariableRed,
pTransitionRed
);
if (SUCCEEDED(hr))
{
hr = pStoryboard->AddTransition(
m_pAnimationVariableGreen,
pTransitionGreen
);
if (SUCCEEDED(hr))
{
hr = pStoryboard->AddTransition(
m_pAnimationVariableBlue,
pTransitionBlue
);
if (SUCCEEDED(hr))
{
// Get the current time and schedule the storyboard for play
...
}
上一個步驟
開始此步驟之前,您應該已完成此步驟:讀取動畫變數值。
下一步
完成此步驟之後,下一個步驟是:排程故事板。
相關主題