Bagikan melalui


Membaca Nilai Variabel Animasi

Setiap kali aplikasi Anda melukis, aplikasi harus membaca nilai variabel animasi saat ini yang mewakili karakteristik visual yang akan dianimasikan.

Gambaran Umum

Saat menggambar bingkai, aplikasi dapat menggunakan metode IUIAnimationVariable::GetValue atau IUIAnimationVariable::GetIntegerValue untuk meminta nilai variabel animasi apa pun yang akan memengaruhi visual dalam bingkai. Dimungkinkan untuk mengklip variabel animasi ke rentang nilai (SetLowerBound dan SetUpperBound), dan untuk meminta nilainya dibulatkan ke bilangan bulat menggunakan skema pembulatan tertentu (SetRoundingMode).

Alih-alih membaca nilai semua variabel untuk setiap bingkai, aplikasi dapat menggunakan metode IUIAnimationVariable::SetVariableChangeHandler atau IUIAnimationVariable::SetVariableIntegerChangeHandler untuk mendaftarkan satu atau beberapa penangan perubahan variabel untuk menerima pemberitahuan hanya ketika ada perubahan pada nilai variabel (IUIAnimationVariableChangeHandler::OnValueChanged) atau nilai yang dibulatkan (IUIAnimationVariableIntegerChangeHandler::OnIntegerValueChanged ). Untuk mengidentifikasi variabel yang diteruskan ke handler perubahan variabel, aplikasi dapat menerapkan tag ke variabel menggunakan metode IUIAnimationVariable::SetTag . Ini adalah objek (IUnknown*), pasangan bilangan bulat yang ditafsirkan oleh aplikasi.

Contoh Kode

Contoh kode berikut diambil dari Thumbnail.cpp di Tata Letak Kisi sampel Animasi Windows; lihat metode CMainWindow::Render. Ini menggunakan metode GetValue untuk membaca nilai sebagai nilai floating-point.

// Get the x-coordinate and y-coordinate animation variable values

DOUBLE x=0;
hr = m_pAnimationVariableX->GetValue(&x);
if (SUCCEEDED(hr))
{
    DOUBLE y=0;
    hr = m_pAnimationVariableY->GetValue(&y);
    if (SUCCEEDED(hr))
    {
        // Draw the object

        ...

    }
}

Contoh kode berikut diambil dari MainWindow.cpp dalam contoh Animasi Windows Animasi Timer-Driven Animation; lihat metode CMainWindow::D rawBackground. Ini menggunakan metode GetIntegerValue untuk membaca nilai sebagai nilai bilangan bulat.

// Get the RGB animation variable values

INT32 red;
HRESULT hr = m_pAnimationVariableRed->GetIntegerValue(
    &red
    );
if (SUCCEEDED(hr))
{
    INT32 green;
    hr = m_pAnimationVariableGreen->GetIntegerValue(
        &green
        );
    if (SUCCEEDED(hr))
    {
        INT32 blue;
        hr = m_pAnimationVariableBlue->GetIntegerValue(
            &blue
            );
        if (SUCCEEDED(hr))
        {
            // Set the RGB of the background brush to the new animated value

            ...
                
            // Paint the background

            ...

        }
    }

    ...

}

Langkah Sebelumnya

Sebelum memulai langkah ini, Anda seharusnya telah menyelesaikan langkah ini: Perbarui Pengelola Animasi dan Gambar Bingkai.

Langkah Selanjutnya

Setelah menyelesaikan langkah ini, langkah selanjutnya adalah: Buat Storyboard dan Tambahkan Transisi.

IUIAnimationVariable::GetIntegerValue

IUIAnimationVariable::GetValue

Gambaran Umum Animasi Windows