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.
Topik terkait