CompositionScopedBatch Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
- 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();
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, AnimationController) |
Connecte une animation à la propriété spécifiée de l’objet et démarre l’animation. (Hérité de CompositionObject) |
StartAnimation(String, CompositionAnimation) |
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. |