Общие сведения о характере поведения во времени

В этом разделе описано поведение времени анимации и других Timeline объектов.

Необходимые компоненты

Для понимания этого раздела необходимо ознакомиться с базовыми средствами анимации. Дополнительные сведения см. в разделе Общие сведения об эффектах анимации.

Типы временных шкал

Представляет Timeline сегмент времени. Он предоставляет свойства, с помощью которых вы сможете задать длину этого сегмента, время запуска сегмента, количество повторов сегмента, скорость течения времени в этом сегменте и многое другое.

Классы, которые унаследованы от класса временной шкалы, предоставляют дополнительные функции, такие как анимация и воспроизведение мультимедиа. WPF предоставляет следующие Timeline типы.

Тип временной шкалы Description
AnimationTimeline Абстрактный базовый класс для Timeline объектов, создающих выходные значения для анимируемых свойств.
MediaTimeline Формирует выходные данные из файла мультимедиа.
ParallelTimeline Тип TimelineGroup этих групп и элементов управления дочерними Timeline объектами.
Storyboard Тип, предоставляющий сведения о целевых объектах ParallelTimeline временной шкалы, которые он содержит.
Timeline Абстрактный базовый класс, который определяет поведение во времени.
TimelineGroup Абстрактный класс для Timeline объектов, которые могут содержать другие Timeline объекты.

Свойства, которые управляют длиной временной шкалы

Представляет Timeline сегмент времени, а длина временная шкала может быть описана разными способами. В следующей таблице приведены несколько терминов для описания длины временной шкалы.

Срок Description Свойства
Простая длительность Длительность, необходимая для одной итерации временной шкалы вперед. Duration
Одно повторение Время, необходимое для временная шкала, чтобы играть вперед один раз и, если AutoReverse свойство имеет значение true, играйте назад один раз. Duration, AutoReverse
Период активности Время, затраченное на временная шкала, чтобы завершить все повторения, указанные его RepeatBehavior свойством. Duration, AutoReverse, RepeatBehavior

Свойство Duration

Как упоминалось ранее, временная шкала представляет собой сегмент времени. Длина этого сегмента определяется временная шкалаDuration. Когда временная шкала достигает окончания своей длительности, воспроизведение прекращается. Если у временной шкалы есть дочерние временные шкалы, их воспроизведение также останавливается. Для анимации свойство Duration определяет, какое время требуется для перехода анимации от начального значения к конечному значению. Длительность временной шкалы иногда называют простой длительностью, чтобы различать длительность одной итерации и общую длительность воспроизведения анимации с учетом повторов. Можно указать длительность с помощью конечного значения времени или специальных значений Automatic или Forever. Длительность анимации должна разрешаться в TimeSpan значение, поэтому она может переходить между значениями.

В следующем примере показано значение с пятью DoubleAnimationDuration секундами.

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

Контейнеры временная шкала, такие как Storyboard и ParallelTimeline, имеют длительность Automaticпо умолчанию, что означает, что они автоматически заканчиваются, когда последний дочерний элемент перестает играть. В следующем примере показано StoryboardDuration разрешение на пять секунд, продолжительность которого занимает все дочерние 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>

Задав Duration значение временная шкала TimeSpan контейнера, можно принудительно воспроизвести более длинные или короткие, чем его дочерние Timeline объекты. Если задать Duration значение, которое меньше длины дочерних Timeline объектов контейнера временная шкала, дочерние Timeline объекты перестают воспроизводиться, когда контейнер временная шкала выполняется. В следующем примере задано DurationStoryboard значение трех секунд из предыдущих примеров. В результате первый DoubleAnimation перестает выполняться через три секунды, когда он анимирует ширину целевого прямоугольника до 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>

Свойство RepeatBehavior

Свойство RepeatBehavior элемента Timeline управления сколько раз повторяется его простой длительностью. RepeatBehavior Используя свойство, можно указать, сколько раз воспроизводится временная шкала (итерацияCount) или общее время, которое должно воспроизводиться (повторDuration). В любом случае анимация пройдет такое количество циклов от начала до конца, которое необходимо для получения необходимого количества повторов или необходимой длительности. По умолчанию количество итераций временной шкалы равно 1.0, это означает, что временная шкала воспроизводится один раз и не повторяется.

В следующем примере свойство используется RepeatBehavior для воспроизведения DoubleAnimation в два раза проще, указав количество итерации.

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

В следующем примере свойство используется RepeatBehavior для выполнения DoubleAnimation игры в течение половины простой длительности.

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

Если для свойства a ForeverTimeline задано RepeatBehavior значение, повторяются Timeline до тех пор, пока не будет остановлено в интерактивном режиме или системой времени. В следующем примере свойство используется RepeatBehavior для бесконечного DoubleAnimation воспроизведения.

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

Дополнительный пример см. в разделе Повторение анимации.

Свойство AutoReverse

Свойство AutoReverse указывает, будет ли Timeline игра в обратном направлении в конце каждой итерации вперед. В следующем примере для свойства AutoReverse a DoubleAnimationtrue; в результате он анимирует от нуля до 100, а затем от 100 до нуля. Суммарное время воспроизведения составляет 10 секунд.

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

Если вы используете Count значение для указания RepeatBehaviorTimeline значения и AutoReverse свойства Timelinetrue, то одно повторение состоит из одной итерации вперед, за которой следует одна итерация назад. Следующий пример задает значение RepeatBehaviorDoubleAnimation из предыдущего примера двумя Count . В результате DoubleAnimation игры в течение 20 секунд: вперед в течение пяти секунд, назад в течение пяти секунд, вперед в течение 5 секунд снова, а затем назад в течение пяти секунд.

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

Если контейнер временная шкала имеет дочерние Timeline объекты, они меняются при выполнении временная шкала контейнера. Дополнительные примеры см. в статье Практическое руководство: настройка автоматического воспроизведения временной шкалы в обратном направлении.

Свойство BeginTime

Свойство BeginTime позволяет указать, когда начинается временная шкала. Время запуска временной шкалы задается относительно ее родительской временной шкалы. Время запуска в ноль секунд означает, что временная шкала запускается сразу после запуска ее родительской шкалы; любое другое значение задает смещение времени запуска дочерней шкалы от времени запуска родительской. Например, время запуска, равное двум секундам, означает, что временная шкала начнет воспроизведение в момент, когда ее родительская временная шкала достигнет времени в две секунды. По умолчанию время запуска для всех временных шкал установлено в ноль секунд. Вы также можете указать время запуска в null, при этом временная шкала не будет запущена. В WPF укажите значение NULL с помощью расширения разметки x:NULL.

Обратите внимание, что время начала не применяется каждый раз, когда временная шкала повторяется из-за его RepeatBehavior параметра. Если бы вы создали анимацию с BeginTime 10 секунд и RepeatBehaviorForever10 секунд, будет 10-секундная задержка, прежде чем анимация играла в первый раз, но не для каждого последовательного повторения. Однако при перезапуске или при повторе родительской временной шкалы возникла бы 10-секундная задержка.

Свойство BeginTime полезно для ошеломляющих временная шкала. В следующем примере создается два Storyboard дочерних DoubleAnimation объекта. Первая анимация имеет пять Duration секунд, а второй имеет Duration 3 секунды. В примере задается BeginTime значение секунды DoubleAnimation на 5 секунд, чтобы он начал играть после первых DoubleAnimation окончаний.

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

Свойство FillBehavior

Timeline Когда достигает конца его общей активной длительности, свойство указывает, FillBehavior останавливается ли оно или содержит последнее значение. Анимация с значением выходных HoldEnd данных с FillBehavior "удержанием": свойство, анимированное, сохраняет последнее значение анимации. Значение причин, которые анимация Stop перестанет влиять на его целевое свойство после окончания.

В следующем примере создается два Storyboard дочерних DoubleAnimation объекта. Оба DoubleAnimation объекта анимировать WidthRectangle от 0 до 100. Элементы Rectangle имеют неанимированные Width значения 500 [независимых от устройства пикселей].

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

Свойства, которые управляют скоростью временной шкалы

Класс Timeline предоставляет три свойства для указания скорости:

См. также