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.

Ikhtisar

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).

Daripada membaca nilai semua variabel untuk setiap bingkai, aplikasi dapat menggunakan metode IUIAnimationVariable::SetVariableChangeHandler atau IUIAnimationVariable::SetVariableIntegerChangeHandler untuk mendaftarkan satu atau lebih pengendali perubahan variabel untuk hanya menerima pemberitahuan jika 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 dalam sampel Animasi Windows Tata Letak Kisi; 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 untuk contoh Animasi Windows Timer-Driven Animasi; lihat metode CMainWindow::DrawBackground. Ini menggunakan metodeGetIntegerValueuntuk 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 Manajer Animasi dan Gambar Bingkai.

Langkah Berikutnya

Setelah menyelesaikan langkah ini, langkah selanjutnya adalah: Membuat Papan Cerita dan Menambahkan Transisi.

IUIAnimationVariable::GetIntegerValue

IUIAnimationVariable::GetValue

Gambaran Umum Animasi Windows