CompositionScopedBatch Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Um grupo criado explicitamente de animações ou efeitos ativos.
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
- Herança
- Atributos
Requisitos do Windows
Família de dispositivos |
Windows 10 (introduzida na 10.0.10586.0)
|
API contract |
Windows.Foundation.UniversalApiContract (introduzida na v2.0)
|
Exemplos
Lote com escopo
// 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;
}
Comentários
Representa um grupo de animações ou efeitos ativos e dispara um retorno de chamada quando todos os membros do grupo são concluídos. Um CompositionScopedBatch é criado explicitamente e é usado para designar objetos específicos a serem incluídos em um único lote com escopo.
Várias instâncias CompositionScopedBatch podem ser criadas e objetos podem ser agregados em vários lotes ao mesmo tempo.
Criar
Para agregar um grupo específico de animações ou direcionar o evento de conclusão de uma única animação, crie um lote com escopo. Um lote com escopo é criado explicitamente usando Compositor.CreateScopedBatch e é usado para designar objetos específicos a serem incluídos em um único lote. Um lote com escopo pode ser criado em qualquer thread e não está vinculado ao thread de composição. Os lotes com escopo só agregarão objetos dentro do thread que ele é criado.
CompositionScopedBatch myScopedBatch = _compositor.CreateScopedBatch(CompositionBatchTypes.Animation);
Suspender e retomar
Depois de criar um lote com escopo, todas as animações iniciadas são agregadas até que o lote seja explicitamente suspenso ou encerrado usando a função Suspend ou End.
CompositionScopedBatch pode ser explicitamente pausado com Suspend para excluir objetos desse lote. Quando um lote é suspenso, ele pode ser reaberto chamando Retomar. Chamar a função Suspend para de agregar estados finais de animação até que Resume seja chamado. Isso permite que você exclua explicitamente o conteúdo de um determinado lote.
No exemplo a seguir, a animação que direciona a propriedade Deslocamento de VisualA não será incluída no lote:
myScopedBatch.Suspend();
VisualA.StartAnimation("Offset", myAnimation);
myScopeBatch.Resume();
End
Um CompositionScopedBatch deve ser explicitamente fechado usando End. Depois de fechado, ele não pode ser suspenso ou retomado novamente. Para concluir o lote, você deve chamar End(). Sem uma chamada de término, o lote permanecerá aberto coletando objetos indefinidamente.
O snippet de código e o diagrama a seguir mostram um exemplo de como o lote agregará animações para acompanhar os estados finais.
Observe que, neste exemplo, as Animações 1, 3 e 4 terão estados finais acompanhados por este lote, mas a Animação 2 não.
myScopedBatch.End();
CompositionScopedBatch myScopedBatch = _compositor.CreateScopedBatch(CompositionBatchTypes.Animation);
// Start Animation1
[…]
myScopedBatch.Suspend();
// Start Animation2
[…]
myScopedBatch.Resume();
// Start Animation3
[…]
// Start Animation4
[…]
myScopedBatch.End();
Envio em lote de um evento de conclusão de uma única animação
Se você quiser saber quando uma única animação termina, você precisa criar um lote com escopo que incluirá apenas a animação que você está direcionando.
Por exemplo:
CompositionScopedBatch myScopedBatch = _compositor.CreateScopedBatch(CompositionBatchTypes.Animation);
Visual.StartAnimation("Opacity", myAnimation);
myScopedBatch.End();
Recuperando o evento de conclusão de um lote
Ao enviar em lote uma ou várias animações, você recuperará o evento de conclusão do lote da mesma maneira. Registre o método de manipulação de eventos para o evento Completed do lote de destino.
myScopedBatch.Completed += OnBatchCompleted;
Estados do lote
Há duas propriedades que você pode usar para determinar o estado de um lote existente; IsActive e IsEnded.
A propriedade IsActive retornará true se um lote de destino for aberto para animações de agregação. IsActive retornará false quando um lote for suspenso ou encerrado.
A propriedade IsEnded retornará true quando você não conseguir adicionar uma animação a esse lote específico. Um lote será encerrado quando você chamar explicitamente End para um lote específico.
Propriedades
Comment |
Uma cadeia de caracteres a ser associada ao CompositionObject. (Herdado de CompositionObject) |
Compositor |
O Compositor usado para criar esse CompositionObject. (Herdado de CompositionObject) |
Dispatcher |
O dispatcher para CompositionObject. (Herdado de CompositionObject) |
DispatcherQueue |
Obtém o DispatcherQueue para o CompostionObject. (Herdado de CompositionObject) |
ImplicitAnimations |
A coleção de animações implícitas anexadas a esse objeto. (Herdado de CompositionObject) |
IsActive |
Indica se o CompositionScopedBatch está aberto no momento para que os objetos sejam agregados. |
IsEnded |
Indica se CompositionScopedBatch foi fechado e não pode mais aceitar alterações. |
Properties |
A coleção de propriedades associadas ao CompositionObject. (Herdado de CompositionObject) |
Métodos
Close() |
Fecha o CompositionObject e libera os recursos do sistema. (Herdado de CompositionObject) |
ConnectAnimation(String, CompositionAnimation) |
Conecta e animação. (Herdado de CompositionObject) |
DisconnectAnimation(String) |
Desconecta uma animação. (Herdado de CompositionObject) |
Dispose() |
Realiza tarefas definidas pelo aplicativo associadas à liberação ou à redefinição de recursos não gerenciados. (Herdado de CompositionObject) |
End() |
Fecha CompositionScopedBatch. Depois que CompositionScopedBatch for fechado, ele não poderá ser suspenso ou retomado novamente. |
PopulatePropertyInfo(String, AnimationPropertyInfo) |
Define uma propriedade que pode ser animada. (Herdado de CompositionObject) |
Resume() |
Retoma a agregação de objetos no CompositionScopedBatch. |
StartAnimation(String, CompositionAnimation) |
Conecta uma animação com a propriedade especificada do objeto e inicia a animação. (Herdado de CompositionObject) |
StartAnimation(String, CompositionAnimation, AnimationController) |
Conecta uma animação com a propriedade especificada do objeto e inicia a animação. (Herdado de CompositionObject) |
StartAnimationGroup(ICompositionAnimationBase) |
Inicia um grupo de animação. O método StartAnimationGroup em CompositionObject permite iniciar CompositionAnimationGroup. Todas as animações no grupo serão iniciadas ao mesmo tempo no objeto . (Herdado de CompositionObject) |
StopAnimation(String) |
Desconecta uma animação da propriedade especificada e interrompe a animação. (Herdado de CompositionObject) |
StopAnimationGroup(ICompositionAnimationBase) |
Interrompe um grupo de animação. (Herdado de CompositionObject) |
Suspend() |
Suspende a agregação de objetos no CompositionScopedBatch. |
TryGetAnimationController(String) |
Retorna um AnimationController para a animação em execução na propriedade especificada. (Herdado de CompositionObject) |
Eventos
Completed |
Evento disparado depois que todas as animações e efeitos no CompositionScopedBatch forem concluídos. |