Vue d'ensemble des comportements de minutage
Cette rubrique décrit les comportements de minutage des animations et d’autres Timeline objets.
Prérequis
Pour comprendre cette rubrique, vous devez connaître les fonctionnalités de base utilisées pour l’animation. Pour plus d’informations, consultez l’article Vue d’ensemble de l’animation.
Types de chronologie
Représente Timeline un segment de temps. Elle fournit des propriétés qui vous permettent de spécifier la longueur de ce segment, le moment où il doit démarrer, combien de fois il doit se répéter, à quelle vitesse le temps s’écoule dans ce segment et bien plus encore.
Les classes qui héritent de la classe de chronologie fournissent des fonctionnalités supplémentaires, comme la lecture de médias et d’animations. WPF fournit les types suivants Timeline .
Type de chronologie | Description |
---|---|
AnimationTimeline | Classe de base abstraite pour Timeline les objets qui génèrent des valeurs de sortie pour l’animation des propriétés. |
MediaTimeline | Génère une sortie à partir d’un fichier multimédia. |
ParallelTimeline | Type de TimelineGroup ce groupe et contrôle les objets enfants Timeline . |
Storyboard | Type de ParallelTimeline données qui fournit des informations de ciblage pour les objets Timeline qu’il contient. |
Timeline | Classe de base abstraite qui définit les comportements de minutage. |
TimelineGroup | Classe abstraite pour Timeline les objets qui peuvent contenir d’autres Timeline objets. |
Propriétés qui contrôlent la longueur d’une chronologie
Un Timeline représente un segment de temps, et la longueur d’une chronologie peut être décrite de différentes façons. Le tableau suivant définit plusieurs termes servant à décrire la longueur d’une chronologie.
Terme | Description | Propriétés |
---|---|---|
Durée simple | Le temps qu’une chronologie prend pour faire une seule itération vers l’avant. | Duration |
Une répétition | La durée nécessaire pour qu’un chronologie à jouer une fois et, si la propriété est vraie, jouez vers l’arrière AutoReverse une fois. | Duration, AutoReverse |
Période active | La durée nécessaire à un chronologie pour terminer toutes les répétitions spécifiées par sa RepeatBehavior propriété. | Duration, AutoReverse, RepeatBehavior |
La propriété Duration
Comme indiqué plus haut, une chronologie représente un segment de temps. La longueur de ce segment est déterminée par les chronologie.Duration Lorsqu’une chronologie atteint la fin de sa durée, elle s’arrête. Si la chronologie a des chronologies enfants, celles-ci s’arrêtent également. Dans le cas d’une animation, la Duration durée pendant laquelle l’animation passe de sa valeur de départ à sa valeur de fin. La durée d’une chronologie est parfois appelée la durée simple, pour faire la distinction entre la durée d’une itération unique et la durée totale de l’animation, y compris les répétitions. Vous pouvez spécifier une durée à l’aide d’une valeur de temps finie ou des valeurs Automatic spéciales ou Forever. La durée d’une animation doit être résolue en valeur, afin qu’elle puisse passer d’une valeur à une TimeSpan autre.
L’exemple suivant montre une DoubleAnimation valeur Duration de cinq secondes.
<DoubleAnimation
Storyboard.TargetName="MyRectangle" Storyboard.TargetProperty="Width"
From="0" To="100" Duration="0:0:5" />
Les chronologie de conteneur, telles que Storyboard et ParallelTimeline, ont une durée par défaut , Automaticce qui signifie qu’elles se terminent automatiquement quand leur dernier enfant cesse de jouer. L’exemple suivant montre un Storyboard dont Duration la résolution est de cinq secondes, le temps nécessaire à l’exécution de tous ses objets enfants DoubleAnimation .
<Storyboard >
<DoubleAnimation
Storyboard.TargetName="MyRectangle" Storyboard.TargetProperty="Width"
From="0" To="100" Duration="0:0:5" />
<DoubleAnimation
Storyboard.TargetName="MyOtherRectangle" Storyboard.TargetProperty="Width"
From="0" To="100" Duration="0:0:3" />
</Storyboard>
En définissant l’chronologie Duration d’un conteneur sur une TimeSpan valeur, vous pouvez forcer à jouer plus longtemps ou plus court que ses objets enfantsTimeline. Si vous définissez la Duration valeur sur une valeur inférieure à la longueur des objets enfants Timeline du conteneur chronologie, les objets enfants Timeline arrêtent de jouer lorsque le conteneur chronologie le fait. L’exemple suivant définit les DurationStoryboard exemples précédents sur trois secondes. Par conséquent, le premier DoubleAnimation cesse de progresser après trois secondes, lorsqu’il a animé la largeur du rectangle cible à 60.
<Storyboard Duration="0:0:3">
<DoubleAnimation
Storyboard.TargetName="MyRectangle" Storyboard.TargetProperty="Width"
From="0" To="100" Duration="0:0:5" />
<DoubleAnimation
Storyboard.TargetName="MyOtherRectangle" Storyboard.TargetProperty="Width"
From="0" To="100" Duration="0:0:3" />
</Storyboard>
La propriété RepeatBehavior
La RepeatBehavior propriété d’un Timeline contrôle combien de fois il répète sa durée simple. À l’aide de la RepeatBehavior propriété, vous pouvez spécifier le nombre de fois où le chronologie est lu (itérationCount) ou la durée totale pendant laquelle il doit être lu (une répétitionDuration). Dans les deux cas, l’animation se répète de bout en bout autant de fois qu’il est nécessaire pour respecter la durée ou le nombre imposés. Par défaut, les chronologies ont un nombre d’itérations de 1.0
, ce qui signifie qu’elles s’exécutent une fois seulement et ne se répètent pas du tout.
L’exemple suivant utilise la RepeatBehavior propriété pour effectuer un DoubleAnimation jeu pendant deux fois sa durée simple en spécifiant un nombre d’itérations.
<DoubleAnimation
Storyboard.TargetName="MyRectangle" Storyboard.TargetProperty="Width"
From="0" To="100" Duration="0:0:5"
RepeatBehavior="2x" />
L’exemple suivant utilise la propriété pour rendre le RepeatBehaviorDoubleAnimation jeu pendant la moitié de sa durée simple.
<DoubleAnimation
Storyboard.TargetName="MyRectangle" Storyboard.TargetProperty="Width"
From="0" To="100" Duration="0:0:5"
RepeatBehavior="0.5x" />
Si vous définissez la RepeatBehavior propriété d’un Timeline sur Forever, les Timeline répétitions jusqu’à ce qu’elles s’arrêtent de manière interactive ou par le système de minutage. L’exemple suivant utilise la RepeatBehavior propriété pour rendre le DoubleAnimation jeu indéfiniment.
<DoubleAnimation
Storyboard.TargetName="MyRectangle" Storyboard.TargetProperty="Width"
From="0" To="100" Duration="0:0:5"
RepeatBehavior="Forever" />
Pour obtenir un exemple supplémentaire, consultez l’article Répéter une Animation.
La propriété AutoReverse
La AutoReverse propriété spécifie si une Timeline valeur est lue vers l’arrière à la fin de chaque itération vers l’avant. L’exemple suivant définit la AutoReverse propriété d’un DoubleAnimation à ; true
par conséquent, il anime de zéro à 100, puis de 100 à zéro. Elle s’exécute pendant 10 secondes au total.
<DoubleAnimation
Storyboard.TargetName="MyRectangle" Storyboard.TargetProperty="Width"
From="0" To="100" Duration="0:0:5"
AutoReverse="True" />
Lorsque vous utilisez une Count valeur pour spécifier l’un TimelineRepeatBehavior et la AutoReverse propriété de celui-ci Timelinetrue
, une seule répétition se compose d’une itération vers l’avant suivie d’une itération vers l’arrière. L’exemple suivant définit l’exemple RepeatBehaviorDoubleAnimation précédent sur deux Count . Par conséquent, le DoubleAnimation jeu est lu pendant 20 secondes : avant pendant cinq secondes, vers l’arrière pendant cinq secondes, avant pendant 5 secondes, puis vers l’arrière pendant cinq secondes.
<DoubleAnimation
Storyboard.TargetName="MyRectangle" Storyboard.TargetProperty="Width"
From="0" To="100" Duration="0:0:5"
RepeatBehavior="2"
AutoReverse="True" />
Si un conteneur chronologie a des objets enfantsTimeline, ils sont inversés lorsque le conteneur chronologie le fait. Pour obtenir des exemples supplémentaires, consultez l’article Specify Whether a Timeline Automatically Reverses (Spécifier l'inversion automatique ou non d'une chronologie).
La propriété BeginTime
La BeginTime propriété vous permet de spécifier le démarrage d’un chronologie. Le temps de début d’une chronologie est relatif à la chronologie de son parent. Un temps de début de zéro seconde signifie que la chronologie démarre dès que son parent démarre ; toute autre valeur crée un décalage entre le démarrage de la chronologie parent et celui de la chronologie enfant. Par exemple, un temps de début de deux secondes signifie que la chronologie démarre quand son parent a atteint une durée de deux secondes. Par défaut, toutes les chronologies ont un temps de début de zéro seconde. Vous pouvez également définir le temps de début d’une chronologie sur null
, ce qui empêche la chronologie de démarrer. Dans WPF, vous spécifiez null à l’aide de l’extension de balisage x :Null.
Notez que l’heure de début n’est pas appliquée chaque fois qu’une chronologie se répète en raison de son RepeatBehavior paramètre. Si vous deviez créer une animation avec un BeginTime délai de 10 secondes et un RepeatBehavior de , il y aurait un délai de Forever10 secondes avant que l’animation ait joué pour la première fois, mais pas pour chaque répétition successive. Toutefois, si la chronologie du parent de l’animation devait redémarrer ou se répéter, le délai de 10 secondes se produirait.
La BeginTime propriété est utile pour l’chronologie s. L’exemple suivant crée un Storyboard objet enfant avec deux objets enfants DoubleAnimation . La première animation a une Duration valeur de cinq secondes, et la seconde a une Duration durée de 3 secondes. L’exemple définit la BeginTime seconde DoubleAnimation à 5 secondes, afin qu’elle commence à jouer après la première DoubleAnimation fin.
<Storyboard>
<DoubleAnimation
Storyboard.TargetName="MyRectangle" Storyboard.TargetProperty="Width"
From="0" To="100" Duration="0:0:5"
BeginTime="0:0:0" />
<DoubleAnimation
Storyboard.TargetName="MyOtherRectangle" Storyboard.TargetProperty="Width"
From="0" To="100" Duration="0:0:3"
BeginTime="0:0:5" />
</Storyboard>
La propriété FillBehavior
Lorsqu’une Timeline valeur atteint la fin de sa durée active totale, la FillBehavior propriété spécifie s’il arrête ou conserve sa dernière valeur. Une animation avec une FillBehavior valeur de sortie « HoldEnd contient » sa valeur de sortie : la propriété en cours d’animation conserve la dernière valeur de l’animation. La valeur des causes de l’arrêt de Stop l’animation affecte sa propriété cible après sa fin.
L’exemple suivant crée un Storyboard objet enfant avec deux objets enfants DoubleAnimation . Les deux DoubleAnimation objets animent les Width deux Rectangle objets de 0 à 100. Les Rectangle éléments ont des valeurs non animées Width de 500 [pixels indépendants de l’appareil].
La FillBehavior propriété du premier DoubleAnimation est définie sur HoldEnd, la valeur par défaut. Par conséquent, la largeur du rectangle reste à 100 après la DoubleAnimation fin.
La FillBehavior propriété du deuxième DoubleAnimation est définie sur Stop. Par conséquent, la Width seconde Rectangle revient à 500 après la DoubleAnimation fin.
<Rectangle Name="MyRectangle"
Width="500" Height="100"
Opacity="1" Fill="Red">
</Rectangle>
<Rectangle Name="MyOtherRectangle"
Width="500" Height="100"
Opacity="1" Fill="Orange">
</Rectangle>
<Button Content="Start FillBehavior Example">
<Button.Triggers>
<EventTrigger RoutedEvent="Button.Click">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetName="MyRectangle" Storyboard.TargetProperty="Width"
From="0" To="100" Duration="0:0:5"
FillBehavior="HoldEnd" />
<DoubleAnimation
Storyboard.TargetName="MyOtherRectangle" Storyboard.TargetProperty="Width"
From="0" To="100" Duration="0:0:5"
FillBehavior="Stop" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Button.Triggers>
</Button>
Propriétés qui contrôlent la vitesse d’une chronologie
La Timeline classe fournit trois propriétés pour spécifier sa vitesse :
SpeedRatio – Spécifie ce taux, par rapport à son parent, au moment où il progresse pour un Timeline. Les valeurs supérieures à une augmentation de la vitesse des objets enfants Timeline et des Timeline valeurs comprises entre zéro et un le ralentissent. Une valeur d’un indique qu’elle Timeline progresse à la même vitesse que son parent. Le SpeedRatio paramètre d’un conteneur chronologie affecte également tous ses objets enfantsTimeline.
AccelerationRatio : spécifie le pourcentage de l’accélération Duration d’une chronologie. Pour voir un exemple, consultez l’article Comment : accélérer ou décélérer une animation.
DecelerationRatio - Spécifie le pourcentage d’une Duration chronologie dépensée décélération. Pour voir un exemple, consultez l’article Comment : accélérer ou décélérer une animation.
Voir aussi
.NET Desktop feedback