Cenni preliminari sui comportamenti temporaliTiming Behaviors Overview

In questo argomento vengono descritti i comportamenti temporali delle animazioni e di altri Timeline oggetti.This topic describes the timing behaviors of animations and other Timeline objects.

PrerequisitiPrerequisites

Per comprendere questo argomento, è necessario conoscere le funzionalità di base delle animazioni.To understand this topic, you should be familiar with basic animation features. Per ulteriori informazioni, vedere il panoramica dell'animazione.For more information, see the Animation Overview.

Tipi di sequenza temporaleTimeline Types

Oggetto Timeline rappresenta un segmento di tempo.A Timeline represents a segment of time. Offre proprietà che consentono di specificare la lunghezza di tale intervallo, il momento di inizio, il numero di ripetizioni, la velocità di avanzamento dell'intervallo e così via.It provides properties that enable you to specify the length of that segment, when it should start, how many times it will repeat, how fast time progresses in that segment, and more.

Le classi che ereditano dalla classe della sequenza temporale offrono funzionalità aggiuntive, ad esempio la riproduzione di animazioni e file multimediali.Classes that inherit from the timeline class provide additional functionality, such as animation and media playback. WPFWPF fornisce le seguenti Timeline tipi. provides the following Timeline types.

Tipo di sequenza temporaleTimeline type DescrizioneDescription
AnimationTimeline Classe base astratta per Timeline gli oggetti che generano valori di output per tali proprietà.Abstract base class for Timeline objects that generate output values for animating properties.
MediaTimeline Genera l'output da un file multimediale.Generates output from a media file.
ParallelTimeline Un tipo di TimelineGroup che i gruppi e controlli figlio Timeline oggetti.A type of TimelineGroup that groups and controls child Timeline objects.
Storyboard Un tipo di ParallelTimeline che fornisce informazioni per gli oggetti della sequenza temporale che contiene.A type of ParallelTimeline that provides targeting information for the Timeline objects it contains.
Timeline Classe di base astratta che definisce i comportamenti temporali.Abstract base class that defines timing behaviors.
TimelineGroup Classe astratta per Timeline gli oggetti che possono contenere altre Timeline oggetti.Abstract class for Timeline objects that can contain other Timeline objects.

Proprietà che controllano la lunghezza di una sequenza temporaleProperties that Control the Length of a Timeline

Oggetto Timeline rappresenta un intervallo di tempo e la lunghezza di una sequenza temporale può essere descritto in modi diversi.A Timeline represents a segment of time, and the length of a timeline can be described in different ways. La tabella seguente definisce vari termini per descrivere la lunghezza di una sequenza temporale.The following table defines several terms for describing the length of a timeline.

TermineTerm DescrizioneDescription ProprietàProperties
Durata sempliceSimple duration Periodo di tempo impiegato da una sequenza temporale per compiere una singola iterazione in avanti.The length of time a timeline takes to make a single forward iteration. Duration
Una ripetizioneOne repetition Il periodo di tempo impiegato da una sequenza temporale per riprodotta una volta e, se il AutoReverse è true, riprodurre con le versioni precedenti di una volta.The length of time it takes for a timeline to play forward once and, if the AutoReverse property is true, play backwards once. Duration, AutoReverseDuration, AutoReverse
Periodo attivoActive period Il periodo di tempo impiegato da una sequenza temporale per completare tutte le ripetizioni specificate dal relativo RepeatBehavior proprietà.The length of time it takes for a timeline to complete all the repetitions specified by its RepeatBehavior property. Duration, AutoReverse, RepeatBehaviorDuration, AutoReverse, RepeatBehavior

Proprietà DurationThe Duration Property

Come accennato in precedenza, una sequenza temporale rappresenta un intervallo di tempo.As previously mentioned, a timeline represents a segment of time. La lunghezza del segmento è la sequenza temporale Duration.The length of that segment is determined by the timeline's Duration. Quando una sequenza temporale raggiunge la fine della propria durata, la riproduzione viene interrotta.When a timeline reaches the end of its duration, it stops playing. Se la sequenza temporale dispone di sequenze temporali figlio, anche la loro riproduzione viene interrotta.If the timeline has child timelines, they stop playing as well. Nel caso di un'animazione, la Duration specifica il tempo impiegato dall'animazione per la transizione dal valore iniziale al valore finale.In the case of an animation, the Duration specifies how long the animation takes to transition from its starting value to its ending value. Una sequenza temporale è detta relativo durata semplice, per distinguere tra la durata di una singola iterazione e la lunghezza totale del tempo di riproduzione dell'animazione, incluse le ripetizioni.A timeline's duration is sometimes called its simple duration, to distinguish between the duration of a single iteration and the total length of time the animation plays including repetitions. È possibile specificare una durata utilizzando un valore di tempo finito o i valori speciali Automatic o Forever.You can specify a duration using a finite time value or the special values Automatic or Forever. Durata di un'animazione deve restituire un TimeSpan valore, pertanto è possibile eseguire la transizione tra i valori.An animation's duration should resolve to a TimeSpan value, so it can transition between values.

Nell'esempio seguente un DoubleAnimation con un Duration di cinque secondi.The following example shows a DoubleAnimation with a Duration of five seconds.

<DoubleAnimation 
  Storyboard.TargetName="MyRectangle" Storyboard.TargetProperty="Width"
  From="0" To="100" Duration="0:0:5"  />

Le sequenze temporali contenitore, ad esempio Storyboard e ParallelTimeline, hanno una durata predefinita di Automatic, ovvero terminano automaticamente al termine dell'esecuzione dell'ultimo figlio.Container timelines, such as Storyboard and ParallelTimeline, have a default duration of Automatic, which means they automatically end when their last child stops playing. Nell'esempio seguente un Storyboard cui Duration si risolve in cinque secondi, quanto tempo servirebbe per tutti i relativi elementi figlio DoubleAnimation oggetti da completare.The following example shows a Storyboard whose Duration resolves to five seconds, the length of time it takes all its child DoubleAnimation objects to complete.

<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>

Impostando il Duration di una sequenza temporale contenitore per un TimeSpan valore, è possibile forzare di riprodurre superiori o inferiori a figlio Timeline degli oggetti.By setting the Duration of a container timeline to a TimeSpan value, you can force to play longer or shorter than its child Timeline objects would play. Se si imposta la Duration su un valore che è minore della lunghezza dell'elemento figlio della sequenza temporale contenitore Timeline oggetti, l'elemento figlio Timeline oggetti interrompere l'esecuzione quando il contenitore della sequenza temporale.If you set the Duration to a value that's smaller than the length of the container timeline's child Timeline objects, the child Timeline objects stop playing when the container timeline does. L'esempio seguente imposta il Duration del Storyboard degli esempi precedenti per tre secondi.The following example sets the Duration of the Storyboard from the preceding examples to three seconds. Di conseguenza, il primo DoubleAnimation viene interrotto dopo tre secondi, quando dispone di animazione per 60 la larghezza del rettangolo di destinazione.As a result, the first DoubleAnimation stops progressing after three seconds, when it has animated the target rectangle's width to 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>

Proprietà RepeatBehaviorThe RepeatBehavior Property

Il RepeatBehavior proprietà di un Timeline controlla quante volte si ripete la propria durata semplice.The RepeatBehavior property of a Timeline controls how many times it repeats its simple duration. Utilizzo di RepeatBehavior proprietà, è possibile specificare quante volte la riproduzione della sequenza temporale (un'iterazione Count) o la lunghezza totale del tempo deve essere riprodotto (una ripetizione Duration).Using the RepeatBehavior property, you can specify how many times the timeline plays (an iteration Count) or the total length of time it should play (a repeat Duration). In entrambi i casi l'animazione viene eseguita dall'inizio alla fine per il numero di volte necessario per completare il conteggio o la durata richiesti.In either case, the animation goes through as many beginning-to-end runs as necessary to fill the requested count or duration. Per impostazione predefinita, le sequenze temporali hanno un conteggio di iterazioni di 1.0, vale a dire che vengono riprodotte una sola volta e non vengono ripetuti.By default, timelines have an iteration count of 1.0, which means they play once and do not repeat at all.

L'esempio seguente usa il RepeatBehavior proprietà per rendere un DoubleAnimation riprodurre per due volte la propria durata semplice specificando un conteggio delle iterazioni.The following example uses the RepeatBehavior property to make a DoubleAnimation play for twice its simple duration by specifying an iteration count.

<DoubleAnimation 
  Storyboard.TargetName="MyRectangle" Storyboard.TargetProperty="Width"
  From="0" To="100" Duration="0:0:5" 
  RepeatBehavior="2x" />

L'esempio seguente viene utilizzata la RepeatBehavior proprietà per rendere il DoubleAnimation riprodurre per metà della durata normale.The next example uses the RepeatBehavior property to make the DoubleAnimation play for half its simple duration.

<DoubleAnimation 
  Storyboard.TargetName="MyRectangle" Storyboard.TargetProperty="Width"
  From="0" To="100" Duration="0:0:5" 
  RepeatBehavior="0.5x" />

Se si imposta la RepeatBehavior proprietà di un Timeline per Forever, Timeline viene ripetuto finché non viene interrotto in modo interattivo o dal sistema di temporizzazione.If you set the RepeatBehavior property of a Timeline to Forever, the Timeline repeats until stopped interactively or by the timing system. L'esempio seguente usa il RepeatBehavior proprietà per rendere il DoubleAnimation riprodurre in modo indefinito.The following example uses the RepeatBehavior property to make the DoubleAnimation play indefinitely.

<DoubleAnimation 
  Storyboard.TargetName="MyRectangle" Storyboard.TargetProperty="Width"
  From="0" To="100" Duration="0:0:5" 
  RepeatBehavior="Forever" />

Per un altro esempio, vedere ripetere un'animazione.For an additional example, see Repeat an Animation.

Proprietà AutoReverseThe AutoReverse Property

Il AutoReverse proprietà specifica se un Timeline verrà riprodotto in senso inverso alla fine di ogni iterazione in avanti.The AutoReverse property specifies whether a Timeline will play backwards at the end of each forward iteration. Nell'esempio seguente viene impostato il AutoReverse proprietà di un DoubleAnimation a true; di conseguenza, aggiunge un'animazione da zero a 100, quindi da 100 a zero.The following example sets to the AutoReverse property of a DoubleAnimation to true; as a result, it animates from zero to 100, and then from 100 to zero. La riproduzione ha una durata totale di 10 secondi.It plays for a total of 10 seconds.

<DoubleAnimation 
  Storyboard.TargetName="MyRectangle" Storyboard.TargetProperty="Width"
  From="0" To="100" Duration="0:0:5" 
  AutoReverse="True" />

Quando si utilizza un Count valore per specificare il RepeatBehavior di un Timeline e AutoReverse proprietà di tale Timeline è true, una sola ripetizione è costituita da uno iterazione in avanti seguita da uno con le versioni precedenti dell'iterazione.When you use a Count value to specify the RepeatBehavior of a Timeline and the AutoReverse property of that Timeline is true, a single repetition consists of one forward iteration followed by one backwards iteration. L'esempio seguente imposta il RepeatBehavior del DoubleAnimation dell'esempio precedente per un Count di due.The following example sets the RepeatBehavior of the DoubleAnimation from the preceding example to a Count of two. Di conseguenza, il DoubleAnimation viene riprodotto per 20 secondi: inoltrare per inoltrare i cinque secondi, con le versioni precedenti per cinque secondi, per 5 secondi e quindi in senso inverso per cinque secondi.As a result, the DoubleAnimation plays for 20 seconds: forward for five seconds, backwards for five seconds, forward for 5 seconds again, and then backwards for five seconds.

<DoubleAnimation 
  Storyboard.TargetName="MyRectangle" Storyboard.TargetProperty="Width"
  From="0" To="100" Duration="0:0:5" 
  RepeatBehavior="2" 
  AutoReverse="True" />

Se dispone di una sequenza temporale contenitore figlio Timeline oggetti, essi invertire quando il contenitore della sequenza temporale.If a container timeline has child Timeline objects, they reverse when the container timeline does. Per ulteriori esempi, vedere specificare se una sequenza temporale invertito automaticamente.For additional examples, see Specify Whether a Timeline Automatically Reverses.

Proprietà BeginTimeThe BeginTime Property

Il BeginTime proprietà consente di specificare l'inizio di una sequenza temporale.The BeginTime property enables you to specify when a timeline starts. Il momento di avvio di una sequenza temporale è relativo alla sequenza temporale padre.A timeline's begin time is relative to its parent timeline. Un momento di avvio pari a zero secondi indica che la sequenza temporale viene avviata all'avvio della sequenza padre. Qualsiasi altro valore crea un offset tra il momento di avvio della riproduzione della sequenza temporale padre e quello della sequenza temporale figlio.A begin time of zero seconds means the timeline starts as soon as it parent starts; any other value creates an offset between when the parent timeline starts playing and when the child timeline plays. Un momento di avvio di due secondi indica ad esempio che la riproduzione della sequenza temporale viene avviata quando la sequenza temporale padre ha raggiunto un valore di due secondi.For example, a begin time of two seconds means the timeline starts playing when its parent has reached a time of two seconds. Per impostazione predefinita, il momento di avvio di tutte le sequenze temporali è pari a zero secondi.By default, all timelines have a begin time of zero seconds. È inoltre possibile impostare una sequenza temporale l'ora di inizio null, che impedisce l'avvio la sequenza temporale.You may also set a timeline's begin time to null, which prevents the timeline from starting. In WPFWPF, specificare null tramite il estensione di Markup X:null.In WPFWPF, you specify null using the x:Null Markup Extension.

Si noti che l'ora di inizio non è applicato ogni volta che si ripete una sequenza temporale perché il relativo RepeatBehavior impostazione.Note that the begin time is not applied each time a timeline repeats because of its RepeatBehavior setting. Se si crea un'animazione con un BeginTime di 10 secondi e un RepeatBehavior di Forever, non vi sarà un ritardo di 10 secondi prima che l'animazione riprodotto per la prima volta, ma non a ogni ripetizione successivi.If you were to create an animation with a BeginTime of 10 seconds and a RepeatBehavior of Forever, there would be a 10-second delay before the animation played for the first time, but not for each successive repetition. Se la sequenza temporale padre dell'animazione tuttavia venisse riavviata o ripetuta, verrebbe applicato il ritardo di 10 secondi.However, if the animation's parent timeline were to restart or repeat, the 10-second delay would occur.

Il BeginTime proprietà è utile per scaglionare le sequenze temporali.The BeginTime property is useful for staggering timelines. Nell'esempio seguente viene creato un Storyboard che ha due figlio DoubleAnimation oggetti.The following example creates a Storyboard that has two child DoubleAnimation objects. La prima animazione è un Duration di cinque secondi, mentre la seconda è una Duration di 3 secondi.The first animation has a Duration of five seconds, and the second has a Duration of 3 seconds. Nell'esempio viene impostata la BeginTime del secondo DoubleAnimation su 5 secondi, in modo che non viene avviata la riproduzione dopo il primo DoubleAnimation termina.The example sets the BeginTime of the second DoubleAnimation to 5 seconds, so that it begins playing after the first DoubleAnimation ends.

<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>

Proprietà FillBehaviorThe FillBehavior Property

Quando un Timeline raggiunge la fine della durata totale attiva, la FillBehavior proprietà consente di specificare se si arresta o mantiene l'ultimo valore.When a Timeline reaches the end of its total active duration, the FillBehavior property specifies whether it stops or holds its last value. Un'animazione con un FillBehavior di HoldEnd "contiene" il valore di output: proprietà da animare conserva l'ultimo valore dell'animazione.An animation with a FillBehavior of HoldEnd "holds" its output value: the property being animated retains the last value of the animation. Il valore Stop che provoca l'arresto di animazione effetto sulla proprietà di destinazione dopo la scadenza.A value of Stop causes that the animation stop affecting its target property after it ends.

Nell'esempio seguente viene creato un Storyboard che ha due figlio DoubleAnimation oggetti.The following example creates a Storyboard that has two child DoubleAnimation objects. Entrambi DoubleAnimation animano oggetti di Width di un Rectangle da 0 a 100.Both DoubleAnimation objects animate the Width of a Rectangle from 0 to 100. Il Rectangle elementi hanno non animati Width valori pari a 500 [device independent pixel].The Rectangle elements have non-animated Width values of 500 [device independent pixels].

<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>

Proprietà che controllano la velocità di una sequenza temporaleProperties that Control the Speed of a Timeline

La Timeline classe fornisce tre proprietà per specificare la velocità:The Timeline class provides three properties for specifying its speed:

Vedere ancheSee Also

Cenni preliminari sull'animazioneAnimation Overview
Cenni preliminari sull'animazione e sul sistema di temporizzazioneAnimation and Timing System Overview
Cenni preliminari sugli eventi di tempoTiming Events Overview
Procedure relative alle proprietàHow-to Topics
Esempio di comportamento temporale di un'animazioneAnimation Timing Behavior Sample