共用方式為


建立分鏡腳本並新增轉換

若要建立動畫,應用程式必須建構分鏡腳本。

概述

建構分鏡腳本的一般步驟如下:

  1. 建立分鏡腳本
  2. 建立一或多個過渡效果
  3. 將過渡效果新增至分鏡腳本,並指定動畫變化的變數

您可以使用動畫管理工具建立空的分鏡腳本。 應用程式必須填入每個分鏡腳本的過渡效果。 每個轉換都會指定單一動畫變數在指定時間間隔中的變更方式。 您可以使用 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

                            ...

}

上一個步驟

開始此步驟之前,您應該已完成此步驟:讀取動畫變數值

下一步

完成此步驟之後,下一個步驟是:排程故事板

IUIAnimationManager::CreateStoryboard

IUIAnimationStoryboard::AddTransition

IUIAnimationTransitionLibrary::CreateAccelerateDecelerateTransition

分鏡腳本概觀