CompositionScopedBatch Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
- 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();
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 . |