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(Microsoft.Foundation.LiftedContract, 65536)]
/// [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.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.Foundation.WindowsAppSDKContract, 65536)]
class CompositionScopedBatch final : CompositionObject
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.Foundation.LiftedContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class CompositionScopedBatch : CompositionObject
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.Foundation.WindowsAppSDKContract), 65536)]
public sealed class CompositionScopedBatch : CompositionObject
Public NotInheritable Class CompositionScopedBatch
Inherits CompositionObject
- Herança
- Atributos
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.
Create
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 Resume. 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 abaixo, a animação direcionada à propriedade Offset do VisualA não será incluída no lote:
myScopedBatch.Suspend();
VisualA.StartAnimation("Offset", myAnimation);
myScopeBatch.Resume();
participante
Um CompositionScopedBatch deve ser fechado explicitamente 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 final, o lote permanecerá aberto para sempre coletando objetos.
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 único evento de conclusão de 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 animação 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 Concluído 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 estiver aberto para agregar animações. IsActive retornará false quando um lote for suspenso ou encerrado.
A propriedade IsEnded retorna true quando você não pode adicionar uma animação a esse lote específico. Um lote será encerrado quando você chamar explicitamente End para um lote específico.
Propriedades
| Nome | Description |
|---|---|
| Comment |
Uma cadeia de caracteres a ser associada ao CompositionObject. (Herdado de CompositionObject) |
| Compositor |
O Compositor usado para criar este CompositionObject. (Herdado de CompositionObject) |
| DispatcherQueue |
Obtém o DispatcherQueue para o CompositionObject. (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 o 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
| Nome | Description |
|---|---|
| Close() |
Fecha o CompositionObject e libera os recursos do sistema. (Herdado de CompositionObject) |
| Dispose() |
Executa tarefas definidas pelo aplicativo associadas à liberação, liberação ou redefinição de recursos não gerenciados. (Herdado de CompositionObject) |
| End() |
Fecha o CompositionScopedBatch. Depois que o 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, AnimationController) |
Conecta uma animação com a propriedade especificada do objeto e inicia a animação. (Herdado de CompositionObject) |
| StartAnimation(String, CompositionAnimation) |
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
| Nome | Description |
|---|---|
| Completed |
Evento disparado após a conclusão de todas as animações e efeitos no CompositionScopedBatch . |