Vue d'ensemble de l'animation et du système de minutage

Cette rubrique décrit comment le système de minutage utilise l’animation, Timelineet Clock les classes pour animer les propriétés.

Prérequis

Pour comprendre cette rubrique, vous devez être en mesure d’utiliser des animations WPF pour animer des propriétés, comme décrit dans la vue d’ensemble de l’animation. Il est également conseillé de vous familiariser avec les propriétés de dépendance. Pour plus d’informations, consultez Vue d’ensemble des propriétés de dépendance.

Chronologies et horloges

La vue d’ensemble de l’animation a décrit comment un Timeline segment de temps est un segment de temps et une animation est un type de ce qui produit des valeurs de Timeline sortie. Par lui-même, un Timeline, ne fait rien d’autre que simplement décrire un segment de temps. C’est l’objet chronologie Clock qui fait le vrai travail. De même, l’animation n’anime pas réellement les propriétés : une classe d’animation décrit comment les valeurs de sortie doivent être calculées, mais c’est celle Clock qui a été créée pour l’animation qui pilote la sortie d’animation et l’applique aux propriétés.

Il Clock s’agit d’un type spécial d’objet qui gère l’état d’exécution lié au minutage pour le Timeline. Il fournit trois bits d’informations essentiels à l’animation et au système de minutage : CurrentTime, CurrentProgresset CurrentState. A Clock détermine son heure actuelle, sa progression et son état à l’aide des comportements de minutage décrits par son Timeline: Duration, RepeatBehavior, AutoReverse, et ainsi de suite.

Dans la plupart des cas, une Clock valeur est créée automatiquement pour votre chronologie. Lorsque vous animez à l’aide d’une Storyboard ou de la BeginAnimation méthode, les horloges sont automatiquement créées pour vos chronologie s et animations et appliquées à leurs propriétés ciblées. Vous pouvez également créer un Clock objet explicitement à l’aide de la CreateClock méthode de votre Timeline. La MediaTimeline.CreateClock méthode crée une horloge du type approprié pour l’élément Timeline sur lequel elle est appelée. Si le Timeline fichier contient des chronologie enfants, il crée Clock également des objets pour eux. Les objets résultants Clock sont organisés dans des arborescences qui correspondent à la structure de l’arborescence Timeline des objets à partir de laquelle ils sont créés.

Il existe différents types d’horloges pour différents types de chronologies. Le tableau suivant montre les Clock types qui correspondent à certains des différents Timeline types.

Type de chronologie Type d’horloge Objectif de l’horloge
Animation (hérite de AnimationTimeline) AnimationClock Génère les valeurs de sortie d’une propriété de dépendance.
MediaTimeline MediaClock Traite un fichier multimédia.
ParallelTimeline ClockGroup Groupes et contrôles de ses objets enfants Clock
Storyboard ClockGroup Groupes et contrôles de ses objets enfants Clock

Vous pouvez appliquer tous les AnimationClock objets que vous créez aux propriétés de dépendance compatibles à l’aide de la ApplyAnimationClock méthode.

Dans les scénarios gourmands en performances, tels que l’animation d’un grand nombre d’objets similaires, la gestion de votre propre Clock utilisation peut offrir des avantages en matière de performances.

Horloges et gestionnaire de temps

Lorsque vous animez des objets dans WPF, il s’agit du gestionnaire de temps qui gère les Clock objets créés pour vos chronologie s. Le gestionnaire de temps est la racine d’une arborescence d’objets Clock et contrôle le flux de temps dans cette arborescence. Un gestionnaire de temps est automatiquement créé pour chaque application WPF et est invisible pour le développeur de l’application. Le gestionnaire de temps a de nombreuses graduations par seconde. Le nombre réel de cycles qui se produisent à chaque seconde varie selon les ressources système disponibles. Pendant chacune de ces graduations, le gestionnaire de temps calcule l’état de tous les ActiveClock objets dans l’arborescence de minutage.

L’illustration suivante montre la relation entre le gestionnaire de temps et AnimationClockune propriété de dépendance animée.

Timing system components and the time manager.
Animation d’une propriété

Lorsque le gestionnaire de temps est coché, il met à jour l’heure de chaque ActiveClock dans l’application. Clock S’il s’agit d’un AnimationClock, il utilise la GetCurrentValue méthode à AnimationTimeline partir de laquelle il a été créé pour calculer sa valeur de sortie actuelle. Fournit AnimationClock l’heure AnimationTimeline locale actuelle, une valeur d’entrée, qui est généralement la valeur de base de la propriété et une valeur de destination par défaut. Lorsque vous récupérez la valeur d’une propriété animée à l’aide de la GetValue méthode ou de son accesseur CLR, vous obtenez la sortie de son AnimationClock.

Groupes d’horloges

La section précédente a décrit comment il existe différents types d’objets Clock pour différents types de chronologie s. L’illustration suivante montre la relation entre le gestionnaire de temps, un ClockGroup, un AnimationClocket une propriété de dépendance animée. Un ClockGroup est créé pour les chronologie qui regroupent d’autres chronologie, telles que la Storyboard classe, qui regroupe des animations et d’autres chronologie.

Timing system components with the time manager and dependency properties.
Un groupe d’horloges

Composition

Il est possible d’associer plusieurs horloges à une seule propriété, auquel cas chaque l’horloge utilise la valeur de sortie de l’exemple d’horloge précédent comme valeur de base. L’illustration suivante montre trois AnimationClock objets appliqués à la même propriété. Clock1 utilise la valeur de base de la propriété animée comme entrée et l’utilise pour générer la sortie. Clock2 prend la sortie de Clock1 comme entrée et l’utilise pour générer la sortie. Clock3 prend la sortie de Clock2 comme entrée et l’utilise pour générer la sortie. Lorsque plusieurs horloges affectent la même propriété simultanément, on dit qu’elles font partie d’une chaîne de composition.

Timing system components composed with multiple dependency properties.
Une chaîne de composition

Notez qu’une relation est créée entre l’entrée et la AnimationClock sortie des objets dans la chaîne de composition, leurs comportements de minutage ne sont pas affectés ; Clock les objets (y compris AnimationClock les objets) ont une dépendance hiérarchique sur leurs objets parents Clock .

Pour appliquer plusieurs horloges à la même propriété, utilisez l’option lors de l’application ComposeHandoffBehavior d’une , d’une animation ou AnimationClockd’une Storyboard.

Graduations et consolidation des événements

En plus du calcul des valeurs de sortie, le gestionnaire de temps effectue un autre travail à chaque graduation : il détermine l’état de chaque horloge et déclenche des événements comme il convient.

Étant donné que ces cycles sont fréquents, beaucoup de choses peuvent se passer entre chaque cycle. Par exemple, un Clock peut être arrêté, démarré et arrêté à nouveau, auquel cas sa CurrentState valeur aura changé trois fois. En théorie, l’événement CurrentStateInvalidated peut être déclenché plusieurs fois dans une seule graduation ; toutefois, le moteur de minutage consolide les événements, afin que l’événement CurrentStateInvalidated puisse être déclenché au plus une fois par graduation. Cela est vrai pour tous les événements de minutage : au plus un événement de chaque type est déclenché pour un objet donné Clock .

Lorsqu’un Clock commutateur indique et revient à son état d’origine entre les graduations (par exemple, la modification de Active vers et de retour à StoppedActive), l’événement associé se produit toujours.

Pour plus d'informations sur les événements de minuterie, consultez Vue d'ensemble des événements de minuterie.

Valeurs actuelles et les valeurs de base des propriétés

Une propriété pouvant être animée peut avoir deux valeurs : une valeur de base et une valeur actuelle. Lorsque vous définissez la propriété à l’aide de son accesseur CLR ou de la SetValue méthode, vous définissez sa valeur de base. Lorsqu’une propriété n’est pas animée, ses valeurs de base et actuelles sont identiques.

Lorsque vous animez une propriété, la AnimationClock propriété définit la valeur actuelle de la propriété. La récupération de la valeur de la propriété par le biais de son accesseur CLR ou de la GetValue méthode retourne la sortie du AnimationClock moment où la propriété AnimationClock est Active ou Filling. Vous pouvez récupérer la valeur de base de la propriété à l’aide de la GetAnimationBaseValue méthode.

Voir aussi