Compartir a través de


CompositionScopedBatch Clase

Definición

Un grupo creado explícitamente de animaciones o efectos activos.

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
Herencia
Object Platform::Object IInspectable CompositionObject CompositionScopedBatch
Atributos

Requisitos de Windows

Familia de dispositivos
Windows 10 (se introdujo en la versión 10.0.10586.0)
API contract
Windows.Foundation.UniversalApiContract (se introdujo en la versión v2.0)

Ejemplos

Batch con ámbito

// 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;
}

Comentarios

Representa un grupo de animaciones o efectos activos y desencadena una devolución de llamada cuando todos los miembros del grupo se han completado. Se crea explícitamente un compositionScopedBatch y se usa para designar objetos específicos que se incluirán en un único lote con ámbito.

Se pueden crear varias instancias de CompositionScopedBatch y los objetos se pueden agregar en varios lotes al mismo tiempo.

Crear

Para agregar un grupo específico de animaciones o tener como destino el evento de finalización de una sola animación, se crea un lote con ámbito. Un lote con ámbito se crea explícitamente mediante Compositor.CreateScopedBatch y se usa para designar objetos específicos que se incluirán en un único lote. Se puede crear un lote con ámbito en cualquier subproceso y no está vinculado al subproceso de composición. Los lotes con ámbito solo agregarán objetos dentro del subproceso que se crean.

CompositionScopedBatch myScopedBatch = _compositor.CreateScopedBatch(CompositionBatchTypes.Animation);

Suspender y reanudar

Después de crear un lote con ámbito, todas las animaciones iniciadas se agregan hasta que el lote se suspende explícitamente o finaliza mediante la función Suspend o End.

CompositionScopedBatch se puede pausar explícitamente con Suspend para excluir objetos de ese lote. Cuando se suspende un lote, se puede volver a abrir llamando a Resume. La llamada a la función Suspend detiene la agregación de estados finales de animación hasta que se llama a Resume. Esto permite excluir explícitamente el contenido de un lote determinado.

En el siguiente ejemplo, la animación destinada a la propiedad Offset de VisualA no se incluirá en el lote:

myScopedBatch.Suspend();
VisualA.StartAnimation("Offset", myAnimation);
myScopeBatch.Resume();

End

Un compositionScopedBatch debe cerrarse explícitamente mediante End. Una vez cerrado, no se puede suspender ni reanudar de nuevo. Para completar el lote, debes llamar a End(). Sin una llamada a End, el lote permanecerá abierto y seguirá recopilando objetos de manera ilimitada.

En el siguiente fragmento de código y diagrama se muestra un ejemplo de cómo el lote agregará animaciones para realizar un seguimiento de los estados finales.

Ten en cuenta que, en este ejemplo, las animaciones 1, 3 y 4 tendrán estados de finalización de los que este lote realizará un seguimiento, pero no la animación 2.

myScopedBatch.End();
CompositionScopedBatch myScopedBatch = 	_compositor.CreateScopedBatch(CompositionBatchTypes.Animation);
// Start Animation1
[…]
myScopedBatch.Suspend();
// Start Animation2 
[…]
myScopedBatch.Resume();
// Start Animation3
[…]
// Start Animation4
[…]
myScopedBatch.End();

El lote con ámbito contiene la animación uno, la animación tres y la animación cuatro, mientras que la animación dos se excluye de los lotes con ámbito

Procesamiento por lotes de un evento de finalización de una única animación

Si quieres saber cuándo finaliza una sola animación, debes crear un lote con ámbito que incluya solo la animación de destino.

Por ejemplo:

CompositionScopedBatch myScopedBatch = 	_compositor.CreateScopedBatch(CompositionBatchTypes.Animation);
Visual.StartAnimation("Opacity", myAnimation);
myScopedBatch.End();

Recuperación de un evento de finalización de un lote

Al procesar por lotes una o varias animaciones, el evento de finalización del lote se recuperará de la misma manera. Registre el método de control de eventos para el evento Completed del lote de destino.

myScopedBatch.Completed += OnBatchCompleted;

Estados de lote

Hay dos propiedades que puede usar para determinar el estado de un lote existente; IsActive e IsEnded.

La propiedad IsActive devuelve true si un lote destino está abierto para agregar animaciones. IsActive devolverá false si un lote se suspende o finaliza.

La propiedad IsEnded devuelve true si no puedes agregar una animación a ese lote específico. Se finalizará un lote cuando llame explícitamente a End para un lote específico.

Propiedades

Comment

Cadena que se va a asociar con compositionObject.

(Heredado de CompositionObject)
Compositor

Compositor que se usa para crear este CompositionObject.

(Heredado de CompositionObject)
Dispatcher

Distribuidor de CompositionObject.

(Heredado de CompositionObject)
DispatcherQueue

Obtiene dispatcherQueue para CompostionObject.

(Heredado de CompositionObject)
ImplicitAnimations

Colección de animaciones implícitas adjuntas a este objeto.

(Heredado de CompositionObject)
IsActive

Indica si compositionScopedBatch está abierto actualmente para que se agreguen objetos.

IsEnded

Indica si compositionScopedBatch se ha cerrado y ya no puede aceptar cambios.

Properties

Colección de propiedades asociadas a CompositionObject.

(Heredado de CompositionObject)

Métodos

Close()

Cierra compositionObject y libera los recursos del sistema.

(Heredado de CompositionObject)
ConnectAnimation(String, CompositionAnimation)

Conecta y animación.

(Heredado de CompositionObject)
DisconnectAnimation(String)

Desconecta una animación.

(Heredado de CompositionObject)
Dispose()

Realiza tareas definidas por la aplicación asociadas a la liberación o al restablecimiento de recursos no administrados.

(Heredado de CompositionObject)
End()

Cierra compositionScopedBatch. Una vez que compositionScopedBatch se ha cerrado, no se puede suspender ni reanudar de nuevo.

PopulatePropertyInfo(String, AnimationPropertyInfo)

Define una propiedad que se puede animar.

(Heredado de CompositionObject)
Resume()

Reanuda la agregación de objetos en CompositionScopedBatch.

StartAnimation(String, CompositionAnimation, AnimationController)

Conecta una animación con la propiedad especificada del objeto e inicia la animación.

(Heredado de CompositionObject)
StartAnimation(String, CompositionAnimation)

Conecta una animación con la propiedad especificada del objeto e inicia la animación.

(Heredado de CompositionObject)
StartAnimationGroup(ICompositionAnimationBase)

Inicia un grupo de animación.

El método StartAnimationGroup en CompositionObject permite iniciar CompositionAnimationGroup. Todas las animaciones del grupo se iniciarán al mismo tiempo en el objeto .

(Heredado de CompositionObject)
StopAnimation(String)

Desconecta una animación de la propiedad especificada y detiene la animación.

(Heredado de CompositionObject)
StopAnimationGroup(ICompositionAnimationBase)

Detiene un grupo de animaciones.

(Heredado de CompositionObject)
Suspend()

Suspende la agregación de objetos en CompositionScopedBatch.

TryGetAnimationController(String)

Devuelve un AnimationController para la animación que se ejecuta en la propiedad especificada.

(Heredado de CompositionObject)

Eventos

Completed

Evento desencadenado una vez completadas todas las animaciones y efectos en CompositionScopedBatch .

Se aplica a

Consulte también