共用方式為


建立分鏡腳本和新增轉換

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

概觀

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

  1. 建立分鏡腳本
  2. 建立一或多個轉換
  3. 將轉換新增至分鏡腳本,指定其動畫的變數

您可以使用動畫管理員來建立空的分鏡腳本。 應用程式必須以轉換填入每個分鏡腳本。 每個轉換都會指定單一動畫變數在指定時間間隔中的變更方式。 您可以使用 Windows 動畫中包含的轉換程式庫元件來建立轉換。 或者,應用程式可以建立自己的自訂轉換,或使用來自協力廠商的轉換程式庫。 當應用程式將轉換新增至分鏡腳本時,它會指定轉換將產生動畫效果的動畫變數。

腳本可能包含一或多個動畫變數上的轉換。 更複雜的分鏡腳本可以使用主要畫面格來同步處理轉換的開始或結束,或指定應該重複 (固定次數或無限期) 的分鏡腳本部分。

範例程式碼

下列範例程式碼取自 Windows 動畫範例 Timer-Driven Animation中的 MainWindow.cpp;請參閱 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

分鏡腳本概觀