FrameworkElement.BeginStoryboard Метод

Определение

Начинает последовательность действий, содержащихся в предоставленной раскадровке.Begins the sequence of actions contained in the provided storyboard.

Перегрузки

BeginStoryboard(Storyboard)

Начинает последовательность действий, содержащихся в предоставленной раскадровке.Begins the sequence of actions that are contained in the provided storyboard.

BeginStoryboard(Storyboard, HandoffBehavior)

Начинает последовательность действий, содержащихся в предоставленной раскадровке, с параметрами, указывающими на реакцию в случае уже анимированного свойства.Begins the sequence of actions contained in the provided storyboard, with options specified for what should happen if the property is already animated.

BeginStoryboard(Storyboard, HandoffBehavior, Boolean)

Начинает последовательность действий, содержащихся в предоставленной раскадровке, с указанным состоянием элемента управления анимацией после ее запуска.Begins the sequence of actions contained in the provided storyboard, with specified state for control of the animation after it is started.

BeginStoryboard(Storyboard)

Начинает последовательность действий, содержащихся в предоставленной раскадровке.Begins the sequence of actions that are contained in the provided storyboard.

public:
 void BeginStoryboard(System::Windows::Media::Animation::Storyboard ^ storyboard);
public void BeginStoryboard (System.Windows.Media.Animation.Storyboard storyboard);
member this.BeginStoryboard : System.Windows.Media.Animation.Storyboard -> unit

Параметры

storyboard
Storyboard

Раскадровка, которая будет начата.The storyboard to begin.

Примеры

В следующем примере извлекается Storyboard из ресурсов, а затем выполняется этот Storyboard при обработке внутреннего события классом.The following example retrieves a Storyboard from resources, and then runs that Storyboard when an internal event is class handled.

private void OnImage1Animate(object sender, RoutedEventArgs e)
{
    Storyboard s;

    s = (Storyboard)this.FindResource("RotateStoryboard");
    this.BeginStoryboard(s);
}
Private Sub OnImage1Animate(ByVal sender As Object, ByVal e As RoutedEventArgs)
    Dim s As Storyboard

    s = CType(Me.FindResource("RotateStoryboard"), Storyboard)
    Me.BeginStoryboard(s)
End Sub

Комментарии

В большинстве типичных сценариев анимации этот метод не используется.Most typical animation scenarios do not use this method. Как правило, вы создаете Storyboard или BeginStoryboard элемент в разметке, а затем размещаете их в качестве EventTriggerного содержимого в элементе.Typically, you create the Storyboard or BeginStoryboard element in markup, and then you place these as the EventTrigger content on an element. При срабатывании события запускается анимация.When triggered by the event, the animation then runs. Большинство аспектов управления Storyboard может быть адресовано свойствами, которые доступны в разметке.Most of the control aspects of a Storyboard can be addressed by properties that are exposed in markup.

Для сигнатур, которые не используют isControllable, параметр или если этот параметр указан false, часы временной шкалы, связанные с анимацией, удаляются сразу же после того, как анимация достигнет периода заполнения.For the signatures that do not use the isControllable, parameter, or when that parameter is specified false, the timeline clocks that are associated with the animation are removed as soon as the animation reaches the "Fill" period. Поэтому анимация не может быть перезапущена после однократного запуска.Therefore the animation cannot be restarted after running once. Для управления анимацией также требуется, чтобы раскадровка имела директиву x:Name или была доступна по ссылке в коде.Controlling an animation also requires that the storyboard have an x:Name Directive or be accessible by reference in code.

BeginStoryboard(Storyboard, HandoffBehavior)

Начинает последовательность действий, содержащихся в предоставленной раскадровке, с параметрами, указывающими на реакцию в случае уже анимированного свойства.Begins the sequence of actions contained in the provided storyboard, with options specified for what should happen if the property is already animated.

public:
 void BeginStoryboard(System::Windows::Media::Animation::Storyboard ^ storyboard, System::Windows::Media::Animation::HandoffBehavior handoffBehavior);
public void BeginStoryboard (System.Windows.Media.Animation.Storyboard storyboard, System.Windows.Media.Animation.HandoffBehavior handoffBehavior);
member this.BeginStoryboard : System.Windows.Media.Animation.Storyboard * System.Windows.Media.Animation.HandoffBehavior -> unit

Параметры

storyboard
Storyboard

Раскадровка, которая будет начата.The storyboard to begin.

handoffBehavior
HandoffBehavior

Значение перечисления, описывающего поведение в случае, если описанное в раскадровке свойство уже анимировано.A value of the enumeration that describes behavior to use if a property described in the storyboard is already animated.

Примеры

В следующем примере извлекается Storyboard из ресурсов, а затем выполняется этот Storyboard при обработке внутреннего события классом.The following example retrieves a Storyboard from resources, and then runs that Storyboard when an internal event is class handled.

private void OnImage1Animate(object sender, RoutedEventArgs e)
{
    Storyboard s;

    s = (Storyboard)this.FindResource("RotateStoryboard");
    this.BeginStoryboard(s);
}
Private Sub OnImage1Animate(ByVal sender As Object, ByVal e As RoutedEventArgs)
    Dim s As Storyboard

    s = CType(Me.FindResource("RotateStoryboard"), Storyboard)
    Me.BeginStoryboard(s)
End Sub

Комментарии

В большинстве типичных сценариев анимации этот метод не используется.Most typical animation scenarios do not use this method. Как правило, вы создаете Storyboard или BeginStoryboard элемент в разметке, а затем размещаете их в качестве EventTriggerного содержимого в элементе.Typically, you create the Storyboard or BeginStoryboard element in markup, and then you place these as the EventTrigger content on an element. При срабатывании события запускается анимация.When triggered by the event, the animation then runs. Большинство аспектов управления Storyboard может быть адресовано свойствами, которые доступны в разметке.Most of the control aspects of a Storyboard can be addressed by properties that are exposed in markup.

Для сигнатур, которые не используют isControllable, параметр или если этот параметр указан false, часы временной шкалы, связанные с анимацией, удаляются сразу же после того, как анимация достигнет периода заполнения.For the signatures that do not use the isControllable, parameter, or when that parameter is specified false, the timeline clocks that are associated with the animation are removed as soon as the animation reaches the "Fill" period. Поэтому анимация не может быть перезапущена после однократного запуска.Therefore the animation cannot be restarted after running once. Для управления анимацией также требуется, чтобы раскадровка имела директиву x:Name или была доступна по ссылке в коде.Controlling an animation also requires that the storyboard have an x:Name Directive or be accessible by reference in code.

Поведение передачи можно указать как атрибут BeginStoryboard.Handoff behavior can be specified as an attribute of BeginStoryboard.

Использование создания HandoffBehaviorUsing the Compose HandoffBehavior

При применении Storyboard, AnimationTimelineили AnimationClock к свойству с помощью Compose HandoffBehaviorлюбые Clock объекты, ранее связанные с этим свойством, продолжают потреблять системные ресурсы. система времени не удаляет часы автоматически.When you apply a Storyboard, AnimationTimeline, or AnimationClock to a property by using the Compose HandoffBehavior, any Clock objects previously associated with that property continue to consume system resources; the timing system does not remove the clocks automatically.

Чтобы избежать проблем с производительностью при применении большого количества часов с помощью Compose, следует удалить составные часы из анимированного свойства после их завершения.To avoid performance issues when you apply a large number of clocks by using Compose, you should remove composing clocks from the animated property after they complete. Существует несколько способов удаления часов.There are several ways to remove a clock:

  • Чтобы удалить все часы из свойства, используйте метод ApplyAnimationClock(DependencyProperty, AnimationClock) или BeginAnimation(DependencyProperty, AnimationTimeline) анимированного объекта.To remove all clocks from a property, use the ApplyAnimationClock(DependencyProperty, AnimationClock) or BeginAnimation(DependencyProperty, AnimationTimeline) method of the animated object. Укажите свойство, анимированное в качестве первого параметра, и null в качестве второго.Specify the property being animated as the first parameter, and null as the second. Это приведет к удалению всех часов анимации из свойства.This removes all animation clocks from the property.

  • Чтобы удалить определенное AnimationClock из списка часов, используйте свойство Controller AnimationClock для получения ClockController, а затем вызовите метод Remove из ClockController.To remove a specific AnimationClock from a list of clocks, use the Controller property of the AnimationClock to retrieve a ClockController, then call the Remove method of the ClockController. Обычно это делается в обработчике событий Completed для часов.This is typically done in the Completed event handler for a clock. Обратите внимание, что ClockController может управлять только корневыми часами. Свойство Controller дочернего объекта Clock возвращает null.Note that only root clocks can be controlled by a ClockController; the Controller property of a child clock returns null. Обратите внимание, что событие Completed не возникает, если фактическая длительность часов бесконечно.Note also that the Completed event is not raised if the effective duration of the clock is forever. В этом случае пользователь должен определить, когда следует вызывать Remove.In that case, the user must determine when to call Remove.

В основном это проблема для анимации объектов, имеющих длинное время жизни.This is primarily an issue for animations on objects that have a long lifetime. Если объект уничтожается сборщиком мусора, его часы также отключаются и уничтожаются мусором.When an object is garbage collected, its clocks are also disconnected and garbage collected.

Дополнительные сведения об объектах часов см. в разделе Общие сведения о анимации и системе управления временем.For more information about clock objects, see Animation and Timing System Overview.

BeginStoryboard(Storyboard, HandoffBehavior, Boolean)

Начинает последовательность действий, содержащихся в предоставленной раскадровке, с указанным состоянием элемента управления анимацией после ее запуска.Begins the sequence of actions contained in the provided storyboard, with specified state for control of the animation after it is started.

public:
 void BeginStoryboard(System::Windows::Media::Animation::Storyboard ^ storyboard, System::Windows::Media::Animation::HandoffBehavior handoffBehavior, bool isControllable);
public void BeginStoryboard (System.Windows.Media.Animation.Storyboard storyboard, System.Windows.Media.Animation.HandoffBehavior handoffBehavior, bool isControllable);
member this.BeginStoryboard : System.Windows.Media.Animation.Storyboard * System.Windows.Media.Animation.HandoffBehavior * bool -> unit

Параметры

storyboard
Storyboard

Раскадровка, которая будет начата.The storyboard to begin.

handoffBehavior
HandoffBehavior

Значение перечисления, описывающего поведение в случае, если описанное в раскадровке свойство уже анимировано.A value of the enumeration that describes behavior to use if a property described in the storyboard is already animated.

isControllable
Boolean

Объявляет, является ли анимация управляемой после запуска (можно ли ее приостановить).Declares whether the animation is controllable (can be paused) after it is started.

Комментарии

В большинстве типичных сценариев анимации этот метод не используется.Most typical animation scenarios do not use this method. Как правило, вы создаете Storyboard или BeginStoryboard элемент в разметке, а затем размещаете их в качестве EventTriggerного содержимого в элементе.Typically, you create the Storyboard or BeginStoryboard element in markup, and then you place these as the EventTrigger content on an element. При срабатывании события запускается анимация.When triggered by the event, the animation then runs. Большинство аспектов управления Storyboard может быть адресовано свойствами, которые доступны в разметке.Most of the control aspects of a Storyboard can be addressed by properties that are exposed in markup.

Для сигнатур, которые не используют isControllable, параметр или если этот параметр указан false, часы временной шкалы, связанные с анимацией, удаляются сразу же после того, как анимация достигнет периода заполнения.For the signatures that do not use the isControllable, parameter, or when that parameter is specified false, the timeline clocks that are associated with the animation are removed as soon as the animation reaches the "Fill" period. Поэтому анимация не может быть перезапущена после однократного запуска.Therefore the animation cannot be restarted after running once. Для управления анимацией также требуется, чтобы раскадровка имела директиву x:Name или была доступна по ссылке в коде.Controlling an animation also requires that the storyboard have an x:Name Directive or be accessible by reference in code.

Поведение передачи можно указать как атрибут BeginStoryboard.Handoff behavior can be specified as an attribute of BeginStoryboard.

Использование создания HandoffBehaviorUsing the Compose HandoffBehavior

При применении Storyboard, AnimationTimelineили AnimationClock к свойству с помощью Compose HandoffBehaviorлюбые Clock объекты, ранее связанные с этим свойством, продолжают потреблять системные ресурсы. система времени не удаляет часы автоматически.When you apply a Storyboard, AnimationTimeline, or AnimationClock to a property by using the Compose HandoffBehavior, any Clock objects previously associated with that property continue to consume system resources; the timing system does not remove the clocks automatically.

Чтобы избежать проблем с производительностью при применении большого количества часов с помощью Compose, следует удалить составные часы из анимированного свойства после их завершения.To avoid performance issues when you apply a large number of clocks by using Compose, you should remove composing clocks from the animated property after they complete. Существует несколько способов удаления часов.There are several ways to remove a clock:

  • Чтобы удалить все часы из свойства, используйте метод ApplyAnimationClock(DependencyProperty, AnimationClock) или BeginAnimation(DependencyProperty, AnimationTimeline) анимированного объекта.To remove all clocks from a property, use the ApplyAnimationClock(DependencyProperty, AnimationClock) or BeginAnimation(DependencyProperty, AnimationTimeline) method of the animated object. Укажите свойство, анимированное в качестве первого параметра, и null в качестве второго.Specify the property being animated as the first parameter, and null as the second. Это приведет к удалению всех часов анимации из свойства.This removes all animation clocks from the property.

  • Чтобы удалить определенное AnimationClock из списка часов, используйте свойство Controller AnimationClock для получения ClockController, а затем вызовите метод Remove из ClockController.To remove a specific AnimationClock from a list of clocks, use the Controller property of the AnimationClock to retrieve a ClockController, then call the Remove method of the ClockController. Обычно это делается в обработчике событий Completed для часов.This is typically done in the Completed event handler for a clock. Обратите внимание, что ClockController может управлять только корневыми часами. Свойство Controller дочернего объекта Clock возвращает null.Note that only root clocks can be controlled by a ClockController; the Controller property of a child clock returns null. Обратите внимание, что событие Completed не возникает, если фактическая длительность часов бесконечно.Note also that the Completed event is not raised if the effective duration of the clock is forever. В этом случае пользователь должен определить, когда следует вызывать Remove.In that case, the user must determine when to call Remove.

В основном это проблема для анимации объектов, имеющих длинное время жизни.This is primarily an issue for animations on objects that have a long lifetime. Если объект уничтожается сборщиком мусора, его часы также отключаются и уничтожаются мусором.When an object is garbage collected, its clocks are also disconnected and garbage collected.

Дополнительные сведения об объектах часов см. в разделе Общие сведения о анимации и системе управления временем.For more information about clock objects, see Animation and Timing System Overview.

Применяется к