Animasyon Değişkenleri Oluşturma

Bir uygulamanın, Windows Animasyonu kullanılarak animasyonlanacak her görsel özelliği için bir animasyon değişkeni oluşturması gerekir.

Genel bakış

Animasyon değişkenleri, animasyon yöneticisi kullanılarak oluşturulur ve uygulama, her birine ihtiyaç duyulduğu sürece bir başvuru tutmalıdır. Uygulamanız genellikle animasyon oluşturduğu görsel nesneyle aynı anda her animasyon değişkenini oluşturur.

Animasyon değişkeni oluşturulduğunda, ilk değeri belirtilmelidir. Bundan sonra değeri yalnızca animasyon oluşturan görsel taslaklar zamanlanarak değiştirilebilir.

Görsel taslaklar oluşturulurken animasyon değişkenleri parametre olarak geçirilir, bu nedenle genellikle ilişkili görsel nesneler yok edilmek üzereyken, uygulamanın temsil ettikleri görsel özelliklerin artık animasyonlu olması gerekmeyene kadar bunları serbest bırakmaması gerekir.

Örnek Kod

Renk Animasyonu Oluşturma

Aşağıdaki örnek kod, Windows Animasyon örneklerinden Application-Driven Animasyon ve Timer-Driven Animasyondosyası MainWindow.cpp'den alınmıştır. Örnekte, arka plan renklerini göstermek için CreateAnimationVariablekullanılarak üç animasyon değişkeni oluşturulur. Kod ayrıca animasyon değişkeninin değerini denetlemek için SetLowerBoundve SetUpperBoundyöntemlerinikullanır.

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 dosyasındaki aşağıdaki tanımlara dikkat edin.

class CMainWindow
{

    ...

private:

    // Animated Variables

    IUIAnimationVariable *m_pAnimationVariableRed;
    IUIAnimationVariable *m_pAnimationVariableGreen;
    IUIAnimationVariable *m_pAnimationVariableBlue;

    ...

};

x ve y Koordinatlarının Animasyonu

Aşağıdaki örnek kod, Windows Animasyon Kılavuz Düzeni ÖrneğiThumbnail.cpp alınmıştır; CMainWindow::CreateAnimationVariables yöntemine bakın. Her nesnenin X ve Y koordinatlarını temsil eden iki animasyon değişkeni oluşturulur.

// 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 dosyasının aşağıdaki tanımlarına dikkat edin.

class CThumbnail
{
public:

    ...

    // X and Y Animation Variables

    IUIAnimationVariable *m_pAnimationVariableX;
    IUIAnimationVariable *m_pAnimationVariableY;

    ...

};

Animasyon değişkenleri kayan noktalı sayılardır, ancak değerleri de tamsayı olarak getirilebilir. Varsayılan olarak, her değer en yakın tamsayıya yuvarlanacaktır, ancak bir değişken için kullanılan yuvarlama modunu geçersiz kılmak mümkündür. Aşağıdaki örnek kod, değerlerin her zaman aşağı yuvarlanması gerektiğini belirtmek için SetRoundingModeyöntemini kullanır.

hr = m_pAnimationVariableX->SetRoundingMode(
    UI_ANIMATION_ROUNDING_MODE_FLOOR
    );
if (SUCCEEDED(hr))
{
    hr = m_pAnimationVariableY->SetRoundingMode(
        UI_ANIMATION_ROUNDING_MODE_FLOOR
        );

    ...

}

Önceki Adım

Bu adıma başlamadan önce şu adımı tamamlamış olmanız gerekir: Ana Animasyon Nesneleri Oluşturma.

Sonraki Adım

Bu adımı tamamladıktan sonra sonraki adım: Animasyon Yöneticisi'ni Güncelleştirin ve çerçeveleri çizin.

IUIAnimationManager::CreateAnimationVariable

IUIAnimationVariable::SetLowerBound

IUIAnimationVariable::SetRoundingMode

IUIAnimationVariable::SetUpperBound

Windows Animasyona Genel Bakış