Gambaran Umum Animasi Windows

Gambaran umum ini menyediakan pengenalan Windows Animation Manager dan berfokus pada komponen dan konsep utama. Untuk informasi selengkapnya tentang papan cerita dan transisi, lihat Gambaran Umum Papan Cerita.

Topik ini berisi bagian berikut:

Konsep Dasar

Animasi adalah urutan gambar diam berturut-turut yang menghasilkan ilusi gerakan ketika diputar kembali. Menggunakan animasi interaktif di antarmuka penggunanya dapat memberikan aplikasi kepribadian yang unik serta meningkatkan pengalaman pengguna. Animasi dapat membantu mengomunikasikan perubahan status besar di antarmuka pengguna dan membantu mengelola kompleksitas antarmuka pengguna. Animasi juga dapat menambah persepsi pengguna tentang kualitas aplikasi.

Sebagai contoh, Animasi Windows digunakan dalam taskbar untuk membantu Anda mengelola dan mengakses file dan program, dan Kaca Pembesar untuk memperbesar berbagai bagian layar untuk mempermudah pengguna untuk melihat.

Unit dasar animasi adalah karakteristik elemen visual yang akan dianimasikan dan deskripsi bagaimana karakteristik itu berubah dari waktu ke waktu. Aplikasi dapat menganimasikan berbagai karakteristik seperti posisi, warna, ukuran, rotasi, kontras, dan opasitas.

Di Animasi Windows, variabel animasi mewakili karakteristik yang akan dianimasikan. Transisi menjelaskan bagaimana nilai variabel animasi tersebut berubah saat animasi terjadi. Misalnya, elemen visual mungkin memiliki variabel animasi yang menentukan tingkat keburamannya, dan tindakan pengguna mungkin menghasilkan transisi yang mengambil tingkat keburaman tersebut dari nilai 50 hingga 100, mewakili animasi dari semi transparan ke buram sepenuhnya.

Papan cerita adalah serangkaian transisi yang diterapkan ke satu atau beberapa variabel animasi dari waktu ke waktu. Aplikasi menampilkan animasi dengan membangun dan memutar papan cerita dan kemudian menggambar urutan bingkai diskrit saat nilai variabel animasi berubah dari waktu ke waktu.

Komponen Animasi Windows

Animasi Windows terdiri dari komponen berikut:

manajer animasi

Aplikasi menggunakan objek manajer animasi untuk membuat variabel animasi dan papan cerita, menjadwalkan dan mengontrol animasi, dan memperbarui informasi status sebelum aplikasi menggambar setiap bingkai. Objek pengelola animasi tunggal biasanya mengelola semua animasi di seluruh aplikasi dan karenanya memiliki kontrol global atas semua papan cerita terjadwal.

variabel animasi

Sebelum memulai animasi apa pun, aplikasi perlu membuat objek variabel animasi. Variabel animasi mewakili satu aspek elemen visual yang akan dianimasikan. Variabel adalah nilai floating-point skalar, meskipun nilainya dapat dibulatkan ke nilai bilangan bulat.

Variabel animasi biasanya memiliki masa pakai yang sama dengan elemen visual yang akan dianimasikan. Nilai awal variabel animasi ditentukan saat variabel dibuat. Setelah itu, nilainya tidak dapat diubah secara langsung; harus diperbarui melalui manajer animasi.

Variabel animasi dapat diidentifikasi dengan tag, yang merupakan pemasangan pengidentifikasi bilangan bulat dengan penunjuk ke objek COM. Tag tidak perlu unik, kecuali aplikasi menggunakannya untuk mencari variabel. Secara default, variabel animasi tidak memiliki tag, dan setiap upaya untuk membaca tagnya akan gagal sampai variabel telah ditetapkan.

sistem pengaturan waktu

Animasi Windows mencakup sistem pengaturan waktu yang membantu memastikan bahwa animasi dirender pada kecepatan bingkai yang halus dan konsisten, sekaligus mengurangi penggunaan sumber daya sistem untuk penyajian ketika sistem sibuk. Timer membantu mengelola penyajian animasi dengan secara otomatis menunjukkan bagian dari satuan waktu kecil, yang disebut tanda centang. Sistem pengaturan waktu memantau performa rendering sistem secara keseluruhan dan membatasi animasi dengan meningkatkan atau mengurangi frekuensi tick secara dinamis. Aplikasi dapat membiarkan timer mendorong manajer animasi dan dapat mendaftarkan handler untuk diberi tahu sebelum dan sesudah manajer diperbarui untuk setiap tick. Aplikasi dapat menentukan kecepatan bingkai animasi minimum yang dapat diterima untuk timer dan diberi tahu jika kecepatan bingkai aktual animasi berada di bawah laju ini.

Untuk menghemat sumber daya sistem, timer dapat dikonfigurasi untuk menonaktifkan dirinya sendiri ketika tidak ada animasi yang berlangsung.

API Animasi Windows

Windows Animation API adalah API berbasis COM berulir tunggal yang menyediakan fitur berikut untuk pengembang:

  • Objek manajer animasi, UIAnimationManager, untuk membuat objek animasi dan mengontrol animasi
  • Variabel animasi dan papan cerita
  • Pustaka dasar, UIAnimationTransitionLibrary, dari transisi siap pakai
  • Objek timer, UIAnimationTimer, untuk menentukan waktu saat ini dan, secara opsional, untuk mengemudikan animasi
  • Hook peristiwa untuk memantau status dan kemajuan animasi

Untuk referensi API lengkap, lihat Referensi Animasi Windows. Misalnya kode, lihat Tugas Animasi Windows dan Sampel Animasi Windows.

Konfigurasi

Aplikasi harus mendapatkan waktu saat ini sebelum menjadwalkan animasi baru. Berikut ini adalah mekanisme pengaturan waktu yang didukung oleh Windows Animation:

Animasi Application-Driven

Aplikasi yang menggunakan API grafis yang dipercepat perangkat keras dapat disinkronkan dengan kecepatan refresh monitor untuk merender animasi yang halus. Secara bergantian, aplikasi dapat menggunakan mekanisme pengaturan waktunya sendiri untuk menentukan kapan harus menggambar setiap bingkai animasi. Dalam kedua kasus, aplikasi akan memberi tahu manajer animasi kapan harus memperbarui statusnya. Timer animasi masih dapat digunakan untuk menentukan waktu saat ini dengan presisi tinggi, dalam unit yang diperlukan oleh manajer animasi.

Diagram berikut menunjukkan interaksi antara aplikasi dan komponen Animasi Windows saat aplikasi mendorong pembaruan animasi secara langsung.

diagram yang menunjukkan interaksi antara aplikasi dan komponen animasi windows saat aplikasi mendorong pembaruan animasi secara langsung.

Dalam konfigurasi yang paling sederhana, aplikasi akan menggambar ulang semuanya setiap kali layar di-refresh, bahkan ketika tidak ada animasi yang diputar. Untuk menghindari pekerjaan yang terbuang sia-sia, aplikasi dapat mendaftarkan pengelola penanganan aktivitas untuk diberi tahu ketika ada animasi yang dijadwalkan, dan dapat mendeteksi kapan jadwal kosong sehingga dapat berhenti menggambar ulang.

Animasi Timer-Driven

Daripada memperbarui manajer animasi secara langsung, aplikasi mungkin membiarkan timer animasi memberi tahu manajer animasi kapan harus memperbarui statusnya, dan hanya diberi tahu ketika setiap pembaruan telah terjadi. Pendekatan ini direkomendasikan untuk API grafis yang lebih lama. Secara umum, jika memungkinkan untuk menyinkronkan dengan kecepatan refresh monitor, lebih baik melakukannya dan menggunakan animasi berbasis aplikasi.

Diagram berikut menunjukkan interaksi antara aplikasi dan komponen Animasi Windows saat timer animasi mendorong pembaruan animasi.

diagram yang memperlihatkan interaksi antara aplikasi dan komponen animasi windows saat timer animasi mendorong pembaruan animasi.

Timer dapat dikonfigurasi untuk berjalan hanya ketika animasi dijadwalkan; melakukannya adalah masalah sederhana untuk melewati parameter tertentu ketika timer dan manajer animasi terhubung.

Fitur Tingkat Lanjut

Di luar fondasi dasar untuk mendukung animasi, Animasi Windows menyertakan dukungan untuk beberapa teknik animasi tingkat lanjut, termasuk:

durasi sensitif konteks

Durasi transisi tidak perlu diperbaiki; dapat ditentukan berdasarkan nilai dan kecepatan variabel animasi ketika transisi dimulai.

pencocokan kecepatan

Gerakan umumnya lebih menyenangkan bagi mata jika posisi dan kecepatan objek bergerak tidak melompat seketika di antara nilai. Ketika papan cerita baru mengganggu salah satu yang saat ini sedang diputar, pencocokan kecepatan memungkinkan papan cerita baru untuk mengambil dengan lancar di mana yang sebelumnya berakhir.

manajemen ketidakcocokan

Jika dua papan cerita perlu memperbarui variabel animasi yang sama secara bersamaan, konflik penjadwalan terjadi. Daripada membutuhkan prioritas numerik tertentu untuk setiap papan cerita, Windows Animation memungkinkan aplikasi menentukan prioritas relatif dari dua papan cerita.

Manajemen Pertikaian

Pengembang dapat menerapkan panggilan balik perbandingan prioritas untuk membandingkan prioritas papan cerita yang dijadwalkan dan papan cerita yang sudah ada dalam jadwal. Aplikasi yang menerapkan perbandingan prioritas dapat menggunakan logika pilihan apa pun untuk menentukan kapan papan cerita melakukan pra-empting yang lain. Untuk mengatasi konflik penjadwalan, Animasi Windows meminta aplikasi mana dari tindakan ini yang dapat diambil, dalam urutan berikut:

  • Batalkan papan cerita terjadwal. Jika papan cerita terjadwal belum mulai diputar, papan cerita mungkin dibatalkan dan segera dihapus dari jadwal.
  • Pangkas papan cerita terjadwal. Ketika papan cerita baru memangkas papan cerita terjadwal, papan cerita terjadwal berhenti memengaruhi variabel segera setelah papan cerita baru mulai menganimasikannya. Kecepatan dicocokkan, memungkinkan papan cerita baru untuk mengambil dengan lancar di mana yang sebelumnya tertinggal.
  • Menyimpulkan papan cerita terjadwal. Papan cerita dapat disimpulkan hanya jika berisi perulangan yang berulang tanpa batas waktu. Jika papan cerita berada dalam perulangan seperti itu ketika disimpulkan, pengulangan saat ini selesai, dan sisa papan cerita kemudian diputar. Jika perulangan belum dimulai ketika papan cerita disimpulkan, perulangan dilewati sepenuhnya.
  • Kompres papan cerita terjadwal. Jika pemangkasan atau pembatalan papan cerita terjadwal bukanlah pilihan, papan cerita diizinkan untuk menyelesaikannya. Windows Animation memperkenalkan kemungkinan mengompresi waktu yang tersedia untuk papan cerita terjadwal (dan papan cerita apa pun yang dijadwalkan sebelumnya), sehingga variabel mencapai status akhir mereka lebih cepat. Ketika kompresi diterapkan, waktu untuk sementara dipercepat untuk papan cerita yang terpengaruh, sehingga mereka bermain lebih cepat.

Jika tidak ada tindakan di atas yang diizinkan oleh objek perbandingan prioritas terdaftar, upaya untuk menjadwalkan papan cerita baru gagal. Secara default, semua papan cerita dapat dipangkas, disimpulkan, atau dikompresi untuk mencegah kegagalan, tetapi tidak ada yang dapat dibatalkan.

Diagram berikut menunjukkan siklus hidup papan cerita, menggunakan status yang ditentukan oleh enumerasi UI_ANIMATION_STORYBOARD_STATUS . Aplikasi menggunakan Windows Animation API untuk membangun papan cerita dan mengirimkannya untuk penjadwalan. Manajer animasi menjadwalkan papan cerita dan mengelola animasi.

diagram yang memperlihatkan bagaimana manajer animasi menjadwalkan papan cerita dan mengelola animasi.

Untuk informasi selengkapnya tentang penjadwalan dan manajemen papan cerita, lihat Gambaran Umum Papan Cerita.

Referensi Animasi Windows

Sampel Animasi Windows

Tugas Animasi Windows