CompositionScopedBatch Kelas

Definisi

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
Object Platform::Object IInspectable CompositionObject CompositionScopedBatch
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();

Batch terlingkup berisi animasi satu, animasi tiga, dan animasi empat sementara animasi dua dikecualikan dari batch terlingkup

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)

Menyambungkan animasi dengan properti objek yang ditentukan dan memulai animasi.

(Diperoleh dari CompositionObject)
StartAnimation(String, CompositionAnimation, AnimationController)

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.

Berlaku untuk

Lihat juga