CompositionScopedBatch Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Grup animasi atau efek aktif yang dibuat secara eksplisit.
public ref class CompositionScopedBatch sealed : CompositionObject
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 131072)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class CompositionScopedBatch final : CompositionObject
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 131072)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class CompositionScopedBatch : CompositionObject
Public NotInheritable Class CompositionScopedBatch
Inherits CompositionObject
- Warisan
- Atribut
Persyaratan Windows
Rangkaian perangkat |
Windows 10 (diperkenalkan dalam 10.0.10586.0)
|
API contract |
Windows.Foundation.UniversalApiContract (diperkenalkan dalam v2.0)
|
Contoh
Batch Terlingkup
// The Green Square's completion events for the Offset and Opacity animations are aggregated
// The Rotation animation completion event is not aggregated
// When the aggregated events are completed OnBatchCompleted method is executed
public void BatchAnimations()
{
// Create a Scoped batch to capture animation completion events
_batch = _compositor.CreateScopedBatch(CompositionBatchTypes.Animation);
// Executing the Offset animation and aggregating completion event
ApplyOffsetAnimation(_greenSquare);
// Suspending to exclude the following Rotation animation from the batch
_batch.Suspend();
// Executing the Rotation animation
ApplyRotationAnimation(_greenSquare);
// Resuming the batch to collect additional animations
_batch.Resume();
// Executing the Opacity animation and aggregating completion event
ApplyOpacityAnimation(_greenSquare);
// Batch is ended and no objects can be added
_batch.End();
// Method triggered when batch completion event fires
_batch.Completed += OnBatchCompleted;
}
Keterangan
Mewakili sekelompok animasi atau efek aktif, dan memicu panggilan balik ketika semua anggota grup telah selesai. CompositionScopedBatch dibuat secara eksplisit dan digunakan untuk menunjuk objek tertentu untuk disertakan dalam satu batch terlingkup.
Beberapa instans CompositionScopedBatch dapat dibuat dan objek dapat diagregasi dalam beberapa batch secara bersamaan.
Buat
Untuk mengagregasi grup animasi tertentu atau menargetkan satu peristiwa penyelesaian animasi, Anda membuat batch terlingkup. Batch terlingkup dibuat secara eksplisit menggunakan Compositor.CreateScopedBatch dan digunakan untuk menunjuk objek tertentu untuk disertakan dalam satu batch. Batch tercakup dapat dibuat pada utas apa pun dan tidak terikat dengan utas komposisi. Batch tercakup hanya akan mengagregasi objek dalam utas yang dibuatnya.
CompositionScopedBatch myScopedBatch = _compositor.CreateScopedBatch(CompositionBatchTypes.Animation);
Menangguhkan dan melanjutkan
Setelah membuat batch terlingkup, semua animasi yang dimulai diagregasi hingga batch secara eksplisit ditangguhkan atau diakhiri menggunakan fungsi Tangguhkan atau Akhiri.
CompositionScopedBatch dapat secara eksplisit dijeda dengan Tangguhkan untuk mengecualikan objek dari batch tersebut. Ketika batch ditangguhkan, batch dapat dibuka kembali dengan memanggil Lanjutkan. Memanggil fungsi Tangguhkan berhenti mengagregasi status akhir animasi hingga Resume dipanggil. Ini memungkinkan Anda untuk secara eksplisit mengecualikan konten dari batch tertentu.
Dalam contoh di bawah ini, animasi yang menargetkan properti Offset VisualA tidak akan disertakan dalam batch:
myScopedBatch.Suspend();
VisualA.StartAnimation("Offset", myAnimation);
myScopeBatch.Resume();
Akhir
CompositionScopedBatch harus ditutup secara eksplisit menggunakan End. Setelah ditutup, ia tidak dapat ditangguhkan atau dilanjutkan lagi. Untuk menyelesaikan batch, Anda harus memanggil End(). Tanpa panggilan Akhir, batch akan tetap terbuka selamanya mengumpulkan objek.
Cuplikan kode dan diagram berikut menunjukkan contoh bagaimana batch akan menggabungkan animasi untuk melacak status akhir.
Perhatikan bahwa dalam contoh ini, Animasi 1, 3, dan 4 akan memiliki status akhir yang dilacak oleh Batch ini, tetapi Animasi 2 tidak akan.
myScopedBatch.End();
CompositionScopedBatch myScopedBatch = _compositor.CreateScopedBatch(CompositionBatchTypes.Animation);
// Start Animation1
[…]
myScopedBatch.Suspend();
// Start Animation2
[…]
myScopedBatch.Resume();
// Start Animation3
[…]
// Start Animation4
[…]
myScopedBatch.End();
Batching satu peristiwa penyelesaian animasi
Jika Anda ingin tahu kapan satu animasi berakhir, Anda perlu membuat batch terlingkup yang hanya akan menyertakan animasi yang Anda targetkan.
Contohnya:
CompositionScopedBatch myScopedBatch = _compositor.CreateScopedBatch(CompositionBatchTypes.Animation);
Visual.StartAnimation("Opacity", myAnimation);
myScopedBatch.End();
Mengambil peristiwa penyelesaian batch
Saat membuat batch animasi atau beberapa animasi, Anda akan mengambil peristiwa penyelesaian batch dengan cara yang sama. Anda mendaftarkan metode penanganan peristiwa untuk peristiwa Selesai dari batch yang ditargetkan.
myScopedBatch.Completed += OnBatchCompleted;
Status batch
Ada dua properti yang dapat Anda gunakan untuk menentukan status batch yang ada; IsActive dan IsEnded.
Properti IsActive mengembalikan true jika batch yang ditargetkan terbuka untuk menggabungkan animasi. IsActive akan mengembalikan false ketika batch ditangguhkan atau berakhir.
Properti IsEnded mengembalikan true saat Anda tidak dapat menambahkan animasi ke batch tertentu. Batch akan diakhiri ketika Anda memanggil End secara eksplisit untuk batch tertentu.
Properti
Comment |
String yang akan dikaitkan dengan CompositionObject. (Diperoleh dari CompositionObject) |
Compositor |
Compositor digunakan untuk membuat CompositionObject ini. (Diperoleh dari CompositionObject) |
Dispatcher |
Dispatcher untuk CompositionObject. (Diperoleh dari CompositionObject) |
DispatcherQueue |
Mendapatkan DispatcherQueue untuk CompostionObject. (Diperoleh dari CompositionObject) |
ImplicitAnimations |
Kumpulan animasi implisit yang melekat pada obyek ini. (Diperoleh dari CompositionObject) |
IsActive |
Menunjukkan apakah CompositionScopedBatch saat ini dibuka untuk objek yang akan diagregasi. |
IsEnded |
Menunjukkan apakah CompositionScopedBatch telah ditutup dan tidak dapat lagi menerima perubahan. |
Properties |
Kumpulan properti yang terkait dengan CompositionObject. (Diperoleh dari CompositionObject) |
Metode
Close() |
Menutup CompositionObject dan merilis sumber daya sistem. (Diperoleh dari CompositionObject) |
ConnectAnimation(String, CompositionAnimation) |
Menyambungkan dan animasi. (Diperoleh dari CompositionObject) |
DisconnectAnimation(String) |
Memutuskan sambungan animasi. (Diperoleh dari CompositionObject) |
Dispose() |
Melakukan tugas yang ditentukan aplikasi yang terkait dengan membebaskan, merilis, atau mengatur ulang sumber daya yang tidak dikelola. (Diperoleh dari CompositionObject) |
End() |
Menutup CompositionScopedBatch. Setelah CompositionScopedBatch ditutup, maka tidak dapat ditangguhkan atau dilanjutkan lagi. |
PopulatePropertyInfo(String, AnimationPropertyInfo) |
Menentukan properti yang dapat dianimasikan. (Diperoleh dari CompositionObject) |
Resume() |
Melanjutkan agregasi objek di CompositionScopedBatch. |
StartAnimation(String, CompositionAnimation, AnimationController) |
Menyambungkan animasi dengan properti objek yang ditentukan dan memulai animasi. (Diperoleh dari CompositionObject) |
StartAnimation(String, CompositionAnimation) |
Menyambungkan animasi dengan properti objek yang ditentukan dan memulai animasi. (Diperoleh dari CompositionObject) |
StartAnimationGroup(ICompositionAnimationBase) |
Memulai grup animasi. Metode StartAnimationGroup pada CompositionObject memungkinkan Anda memulai CompositionAnimationGroup. Semua animasi dalam grup akan dimulai pada saat yang sama pada objek. (Diperoleh dari CompositionObject) |
StopAnimation(String) |
Memutuskan sambungan animasi dari properti yang ditentukan dan menghentikan animasi. (Diperoleh dari CompositionObject) |
StopAnimationGroup(ICompositionAnimationBase) |
Menghentikan grup animasi. (Diperoleh dari CompositionObject) |
Suspend() |
Menangguhkan agregasi objek di CompositionScopedBatch. |
TryGetAnimationController(String) |
Mengembalikan AnimationController untuk animasi yang berjalan pada properti yang ditentukan. (Diperoleh dari CompositionObject) |
Acara
Completed |
Peristiwa dipicu setelah semua animasi dan efek dalam CompositionScopedBatch selesai. |