Partilhar via


CompositionScopedBatch Classe

Definição

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

O lote analisado contém a animação 1, 3 e 4, enquanto a animação 2 é excluída.

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, 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

Completed

Evento disparado depois que todas as animações e efeitos no CompositionScopedBatch forem concluídos.

Aplica-se a

Confira também