CompositionScopedBatch Classe

Définition

Groupe d’animations ou d’effets actifs créé explicitement.

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
Héritage
Object Platform::Object IInspectable CompositionObject CompositionScopedBatch
Attributs

Configuration requise pour Windows

Famille d’appareils
Windows 10 (introduit dans 10.0.10586.0)
API contract
Windows.Foundation.UniversalApiContract (introduit dans v2.0)

Exemples

Lot délimité

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

Remarques

Représente un groupe d’animations ou d’effets actifs et déclenche un rappel lorsque tous les membres du groupe sont terminés. Un Objet CompositionScopedBatch est créé explicitement et est utilisé pour désigner des objets spécifiques à inclure dans un lot délimité unique.

Plusieurs instances CompositionScopedBatch peuvent être créées et les objets peuvent être agrégés dans plusieurs lots en même temps.

Créer

Pour agréger un groupe d’animations spécifique ou cibler l’événement d’achèvement d’une animation unique, vous créez un lot délimité. Un lot délimité est créé explicitement à l’aide de Compositor.CreateScopedBatch et est utilisé pour désigner des objets spécifiques à inclure dans un seul lot. Un lot délimité peut être créé sur n’importe quel thread et n’est pas lié au thread de composition. Les lots délimités agrégent uniquement les objets au sein du thread qu’il est créé.

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

Suspendre et reprendre

Après avoir créé un lot délimité, toutes les animations démarrées s’agrègent jusqu’à ce que le lot soit explicitement suspendu ou terminé à l’aide de la fonction Suspend ou End.

CompositionScopedBatch peut être explicitement suspendu avec Suspend afin d’exclure des objets de ce lot. Lorsqu’un lot est suspendu, il peut être rouvert en appelant Cv. L’appel de la fonction Suspend arrête d’agréger les états de fin de l’animation jusqu’à ce que Resume soit appelé. Cela vous permet d’exclure explicitement du contenu d’un lot donné.

Dans l’exemple ci-dessous, l’animation ciblant la propriété Offset de VisualA ne sera pas incluse dans le lot :

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

End

Un Objet CompositionScopedBatch doit être fermé explicitement à l’aide de End. Une fois qu’il a été fermé, il ne peut pas être suspendu ou repris à nouveau. Pour terminer votre lot, vous devez appeler End(). Sans cet appel, le lot restera ouvert et collectera des objets en permanence.

L’extrait de code et le diagramme suivants montrent un exemple de la façon dont le lot agrège les animations pour suivre les états finaux.

Notez que, dans cet exemple, les états de fin des animations 1, 3 et 4 feront l’objet d’un suivi dans ce lot, mais pas l’animation 2.

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

Le lot délimité contient les animations 1, 3 et 4, mais pas l’animation 2.

Traitement par lot d’un événement d’achèvement d’une animation unique

Si vous souhaitez savoir quand une animation unique se termine, vous devez créer un lot délimité qui inclura uniquement l’animation que vous ciblez.

Par exemple :

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

Récupération des événements d’achèvement d’un lot

Lors du traitement par lot d’une ou plusieurs animations, la récupération de l’événement d’achèvement du lot se fait de la même manière. Vous inscrivez la méthode de gestion des événements pour l’événement Completed du lot ciblé.

myScopedBatch.Completed += OnBatchCompleted;

États de lot

Il existe deux propriétés que vous pouvez utiliser pour déterminer l’état d’un lot existant ; IsActive et IsEnded.

La propriété IsActive retourne la valeur true si un lot ciblé est ouvert à l’agrégation des animations. IsActive retourne la valeur false lorsqu’un lot est suspendu ou terminé.

Si la propriété IsEnded retourne la valeur true, vous ne pouvez pas ajouter d’animation à ce lot spécifique. Un lot prend fin lorsque vous appelez explicitement End pour un lot spécifique.

Propriétés

Comment

Chaîne à associer à CompositionObject.

(Hérité de CompositionObject)
Compositor

Compositor utilisé pour créer cet Objet CompositionObject.

(Hérité de CompositionObject)
Dispatcher

Répartiteur pour compositionObject.

(Hérité de CompositionObject)
DispatcherQueue

Obtient le DispatcherQueue pour CompostionObject.

(Hérité de CompositionObject)
ImplicitAnimations

Collection d’animations implicites attachées à cet objet.

(Hérité de CompositionObject)
IsActive

Indique si compositionScopedBatch est actuellement ouvert pour les objets à agréger.

IsEnded

Indique si compositionScopedBatch a été fermé et ne peut plus accepter les modifications.

Properties

Collection de propriétés associées à CompositionObject.

(Hérité de CompositionObject)

Méthodes

Close()

Ferme l’objet CompositionObject et libère les ressources système.

(Hérité de CompositionObject)
ConnectAnimation(String, CompositionAnimation)

Connecte et animation.

(Hérité de CompositionObject)
DisconnectAnimation(String)

Déconnecte une animation.

(Hérité de CompositionObject)
Dispose()

Exécute les tâches définies par l'application associées à la libération ou à la redéfinition des ressources non managées.

(Hérité de CompositionObject)
End()

Ferme compositionScopedBatch. Une fois le CompositionScopedBatch fermé, il ne peut plus être suspendu ou repris.

PopulatePropertyInfo(String, AnimationPropertyInfo)

Définit une propriété qui peut être animée.

(Hérité de CompositionObject)
Resume()

Reprend l’agrégation des objets dans CompositionScopedBatch.

StartAnimation(String, CompositionAnimation)

Connecte une animation à la propriété spécifiée de l’objet et démarre l’animation.

(Hérité de CompositionObject)
StartAnimation(String, CompositionAnimation, AnimationController)

Connecte une animation à la propriété spécifiée de l’objet et démarre l’animation.

(Hérité de CompositionObject)
StartAnimationGroup(ICompositionAnimationBase)

Démarre un groupe d’animations.

La méthode StartAnimationGroup sur CompositionObject vous permet de démarrer CompositionAnimationGroup. Toutes les animations du groupe seront démarrées en même temps sur l’objet.

(Hérité de CompositionObject)
StopAnimation(String)

Déconnecte une animation de la propriété spécifiée et arrête l’animation.

(Hérité de CompositionObject)
StopAnimationGroup(ICompositionAnimationBase)

Arrête un groupe d’animations.

(Hérité de CompositionObject)
Suspend()

Suspend l’agrégation d’objets dans CompositionScopedBatch.

TryGetAnimationController(String)

Renvoie un AnimationController pour l’animation en cours d’exécution sur la propriété spécifiée.

(Hérité de CompositionObject)

Événements

Completed

Événement déclenché une fois que toutes les animations et effets dans CompositionScopedBatch sont terminés.

S’applique à

Voir aussi