Sdílet prostřednictvím


Vytvoření scénáře a přidání přechodů

Pokud chcete vytvořit animaci, musí aplikace vytvořit scénář.

Přehled

Obecné kroky pro vytvoření scénáře jsou následující:

  1. Vytvoření scénáře
  2. Vytvoření jednoho nebo více přechodů
  3. Přidejte přechody do scénáře a určete proměnné, které animují.

Pomocí správce animací je možné vytvořit prázdnou storyboard. Aplikace musí naplnit jednotlivé scénáře přechody. Každý přechod určuje, jak se v daném časovém intervalu mění jedna animační proměnná. Přechody je možné vytvořit pomocí komponenty přechodové knihovny, která je součástí programu Windows Animation. Případně může aplikace vytvořit vlastní přechody nebo použít přechodovou knihovnu od třetí strany. Když aplikace přidá přechod do scénáře, určuje, která animační proměnná bude přechod animovat.

Scénář může obsahovat přechody v jedné nebo více animačních proměnných. Složitější scénáře můžou pomocí klíčových snímků synchronizovat začátek nebo konce přechodů nebo určit části scénáře, které by se měly opakovat (pevný počet nebo neomezeně dlouho).

Příklad kódu

Následující příklad kódu je převzat z MainWindow.cpp v ukázce animace Windows Timer-Driven Animace; viz CMainWindow::ChangeColor metoda. Tento příklad vytvoří scénář (krok 1) pomocí IUIAnimationManager::CreateStoryboard metoda, vytvoří přechody (krok 2) pomocí IUIAnimationTransitionLibrary::CreateAccelerateDecelerateTransition metoda a přidá přechody do scénáře (krok 3) pomocí IUIAnimationStoryboard::AddTransition metoda.

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

                            ...

}

Předchozí krok

Před zahájením tohoto kroku byste měli mít dokončený tento krok: Čtení hodnot proměnných animace.

Další krok

Po dokončení tohoto kroku je dalším krokem: Naplánování scénáře.

IUIAnimationManager::CreateStoryboard

IUIAnimationStoryboard::AddTransition

IUIAnimationTransitionLibrary::CreateAccelerateDecelerateTransition

Přehled scénáře