Storyboard Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Управляет анимацией с помощью временная шкала и предоставляет сведения о целевых объектах и свойствах для дочерних анимаций.
public ref class Storyboard sealed : Timeline
/// [Windows.Foundation.Metadata.Activatable(65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.UI.Xaml.Markup.ContentProperty(Name="Children")]
class Storyboard final : Timeline
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.UI.Xaml.Markup.ContentProperty(Name="Children")]
/// [Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
class Storyboard final : Timeline
[Windows.Foundation.Metadata.Activatable(65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.UI.Xaml.Markup.ContentProperty(Name="Children")]
public sealed class Storyboard : Timeline
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.UI.Xaml.Markup.ContentProperty(Name="Children")]
[Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
public sealed class Storyboard : Timeline
Public NotInheritable Class Storyboard
Inherits Timeline
<Storyboard ...>
oneOrMoreChildTimelines
</Storyboard>
- Наследование
- Атрибуты
Требования к Windows
Семейство устройств |
Windows 10 (появилось в 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (появилось в v1.0)
|
Примеры
В следующем примере показано, как использовать методы Begin, Stop, Pause и Resume для управления воспроизведением раскадровки (анимации). Набор кнопок позволяет пользователю вызывать эти методы.
<StackPanel x:Name="LayoutRoot" >
<StackPanel.Resources>
<Storyboard x:Name="myStoryboard">
<DoubleAnimation From="1" To="6" Duration="00:00:6"
Storyboard.TargetName="rectScaleTransform"
Storyboard.TargetProperty="ScaleY">
<DoubleAnimation.EasingFunction>
<BounceEase Bounces="2" EasingMode="EaseOut"
Bounciness="2" />
</DoubleAnimation.EasingFunction>
</DoubleAnimation>
</Storyboard>
</StackPanel.Resources>
<!-- Button that begins animation. -->
<Button Click="Animation_Begin"
Margin="2" Content="Begin" />
<!-- Button that pauses Animation. -->
<Button Click="Animation_Pause"
Margin="2" Content="Pause" />
<!-- Button that resumes Animation. -->
<Button Click="Animation_Resume"
Margin="2" Content="Resume" />
<!-- Button that stops Animation. Stopping the animation
returns the ellipse to its original location. -->
<Button Click="Animation_Stop"
Margin="2" Content="Stop" />
<Rectangle Fill="Blue" Width="200" Height="30">
<Rectangle.RenderTransform>
<ScaleTransform x:Name="rectScaleTransform" />
</Rectangle.RenderTransform>
</Rectangle>
</StackPanel>
private void Animation_Begin(object sender, RoutedEventArgs e)
{
myStoryboard.Begin();
}
private void Animation_Pause(object sender, RoutedEventArgs e)
{
myStoryboard.Pause();
}
private void Animation_Resume(object sender, RoutedEventArgs e)
{
myStoryboard.Resume();
}
private void Animation_Stop(object sender, RoutedEventArgs e)
{
myStoryboard.Stop();
}
Private Sub Animation_Begin(sender As Object, e As RoutedEventArgs)
myStoryboard.Begin()
End Sub
Private Sub Animation_Pause(sender As Object, e As RoutedEventArgs)
myStoryboard.Pause()
End Sub
Private Sub Animation_Resume(sender As Object, e As RoutedEventArgs)
myStoryboard.Resume()
End Sub
Private Sub Animation_Stop(sender As Object, e As RoutedEventArgs)
myStoryboard.Stop()
End Sub
//using Windows.UI.Xaml.Media.Animation;
//using Windows.UI.Xaml.Shapes;
//using Windows.UI
private void Create_And_Run_Animation(object sender, RoutedEventArgs e)
{
// Create a red rectangle that will be the target
// of the animation.
Rectangle myRectangle = new Rectangle();
myRectangle.Width = 200;
myRectangle.Height = 200;
SolidColorBrush myBrush = new SolidColorBrush(Colors.Red);
myRectangle.Fill = myBrush;
// Create the transform
TranslateTransform moveTransform = new TranslateTransform();
moveTransform.X = 0;
moveTransform.Y = 0;
myRectangle.RenderTransform = moveTransform;
// Add the rectangle to the tree.
LayoutRoot.Children.Add(myRectangle);
// Create a duration of 2 seconds.
Duration duration = new Duration(TimeSpan.FromSeconds(2));
// Create two DoubleAnimations and set their properties.
DoubleAnimation myDoubleAnimationX = new DoubleAnimation();
DoubleAnimation myDoubleAnimationY = new DoubleAnimation();
myDoubleAnimationX.Duration = duration;
myDoubleAnimationY.Duration = duration;
Storyboard justintimeStoryboard = new Storyboard();
justintimeStoryboard.Duration = duration;
justintimeStoryboard.Children.Add(myDoubleAnimationX);
justintimeStoryboard.Children.Add(myDoubleAnimationY);
Storyboard.SetTarget(myDoubleAnimationX, moveTransform);
Storyboard.SetTarget(myDoubleAnimationY, moveTransform);
// Set the X and Y properties of the Transform to be the target properties
// of the two respective DoubleAnimations.
Storyboard.SetTargetProperty(myDoubleAnimationX, "X");
Storyboard.SetTargetProperty(myDoubleAnimationY, "Y");
myDoubleAnimationX.To = 200;
myDoubleAnimationY.To = 200;
// Make the Storyboard a resource.
LayoutRoot.Resources.Add("justintimeStoryboard", justintimeStoryboard);
// Begin the animation.
justintimeStoryboard.Begin();
}
' need Imports for Windows.UI.Xaml.Shapes, Windows.UI.Media.Animation, Windows.UI
Private Sub Create_And_Run_Animation(sender As Object, e As RoutedEventArgs)
' Create a red rectangle that will be the target
' of the animation.
Dim myRectangle As Rectangle = New Rectangle
myRectangle.Width = 200
myRectangle.Height = 200
Dim myBrush As SolidColorBrush = New SolidColorBrush(Colors.Red)
myRectangle.Fill = myBrush
' Create the transform
Dim moveTransform As TranslateTransform = New TranslateTransform
moveTransform.X = 0
moveTransform.Y = 0
myRectangle.RenderTransform = moveTransform
' Add the rectangle to the tree.
LayoutRoot.Children.Add(myRectangle)
' Create a duration of 2 seconds.
Dim duration As Duration = New Duration(TimeSpan.FromSeconds(2))
' Create two DoubleAnimations and set their properties.
Dim myDoubleAnimationX As DoubleAnimation = New DoubleAnimation
Dim myDoubleAnimationY As DoubleAnimation = New DoubleAnimation
myDoubleAnimationX.Duration = duration
myDoubleAnimationY.Duration = duration
Dim justintimeStoryboard As Storyboard = New Storyboard
justintimeStoryboard.Duration = duration
justintimeStoryboard.Children.Add(myDoubleAnimationX)
justintimeStoryboard.Children.Add(myDoubleAnimationY)
Storyboard.SetTarget(myDoubleAnimationX, moveTransform)
Storyboard.SetTarget(myDoubleAnimationY, moveTransform)
' Set the X and Y properties of the Transform to be the target properties
' of the two respective DoubleAnimations.
Storyboard.SetTargetProperty(myDoubleAnimationX, "X")
Storyboard.SetTargetProperty(myDoubleAnimationY, "Y")
myDoubleAnimationX.To = 200
myDoubleAnimationY.To = 200
' Make the Storyboard a resource.
LayoutRoot.Resources.Add("justintimeStoryboard", justintimeStoryboard)
' Begin the animation.
justintimeStoryboard.Begin()
End Sub
Комментарии
Раскадровка является важным классом в концепции раскадровки анимации. Дополнительные сведения о концепции см. в разделе Раскадровка анимации.
Раскадровка используется для следующих свойств:
Эти свойства не являются единственным местом, где определяется раскадровка. Типичный способ использования Раскадровки для раскадровки анимации заключается в том, что раскадровка определяется в коллекции Resources ( Application.Resources или FrameworkElement.Resources, или, возможно, как ресурс в файле, например Generic.xaml для пользовательского элемента управления). Всякий раз, когда он определен как ресурс XAML, всегда следует назначать значение атрибута x:Name раскадровке. Затем вы сможете ссылаться на имя как программную переменную в коде программной части. Эта ссылка потребуется для фактического запуска анимаций, содержащихся в Storyboard, путем вызова метода Begin в этом экземпляре Storyboard. Storyboard также имеет другие методы управления, такие как Stop , которые могут управлять анимацией после этого.
Раскадровка наследует несколько свойств от временной шкалы. Эти свойства можно применить к раскадровке или к одной из анимаций в ней (в коллекции Children ). Настройка свойств временной шкалы на main Storyboard вместо каждой анимации имеет все плюсы и недостатки. Подробнее: Раскадрованные анимации.
Кроме того, для управления предопределенной анимацией, добавляемой в элементы управления или пользовательский интерфейс, также требуется раскадровка, если вы используете одну из анимаций темы. Анимации тем не имеют врожденной точки триггера, поэтому вам нужно содержать анимации тем в раскадровке в качестве дочерних элементов. Если раскадровка используется в качестве значения VisualState.Storyboard , то анимация запускается при загрузке этого визуального состояния. Или, если она находится в VisualTransition.Storyboard, анимация запускается при обнаружении этого перехода с помощью визуального диспетчера состояний. Это наиболее распространенный способ использования анимации темы, но вы также можете поместить его в свободный ресурс Storyboard и явно запустить анимацию, вызвав Begin. Дополнительные сведения об использовании анимации тем см. в статье Краткое руководство. Анимация пользовательского интерфейса с помощью анимации библиотеки или раскадровки для визуальных состояний.
Присоединенные свойства XAML
Storyboard — это класс службы узла для нескольких присоединенных свойств XAML. Они позволяют выполнять дочерние анимации под управлением раскадровки для каждого целевого объекта, отдельного целевого элемента и целевых свойств, при этом следовать тому же управляющей временная шкала и механизму активации, что и родительский.
Для поддержки доступа обработчика XAML к присоединенным свойствам, а также для предоставления коду эквивалентных операций получения и задания , каждое присоединенное свойство XAML имеет пару методов доступа Get и Set. Другой способ получить или задать значение в коде — использовать систему свойств зависимостей, вызывая GetValue или SetValue и передавая поле идентификатора в качестве идентификатора свойства зависимостей.
Присоединенное свойство | Описание |
---|---|
Targetname | Получает или задает имя объекта для анимации. |
TargetProperty | Возвращает или задает свойство, которое необходимо анимировать. |
Конструкторы
Storyboard() |
Инициализирует новый экземпляр класса Storyboard . |
Свойства
AutoReverse |
Получает или задает значение, указывающее, воспроизводится ли временная шкала в обратном направлении после завершения прямой итерации. (Унаследовано от Timeline) |
BeginTime |
Возвращает или задает время начала этой временной шкалы . (Унаследовано от Timeline) |
Children |
Возвращает коллекцию дочерних объектов временной шкалы . |
Dispatcher |
Возвращает CoreDispatcher , с которым связан этот объект. CoreDispatcher представляет средство, которое может получить доступ к DependencyObject в потоке пользовательского интерфейса, даже если код инициируется потоком, не относящегося к пользовательскому интерфейсу. (Унаследовано от DependencyObject) |
Duration |
Получает или задает продолжительность воспроизведения шкалы времени без учета повторов. (Унаследовано от Timeline) |
FillBehavior |
Возвращает или задает значение, указывающее поведение анимации после достижения конца активного периода. (Унаследовано от Timeline) |
RepeatBehavior |
Получает или задает поведение этой временной шкалы при повторе. (Унаследовано от Timeline) |
SpeedRatio |
Возвращает или задает скорость относительно родительского элемента, в течение которого выполняется выполнение этой временной шкалы. (Унаследовано от Timeline) |
TargetNameProperty |
Определяет присоединенное свойство XAML Storyboard.TargetName . |
TargetPropertyProperty |
Определяет присоединенное свойство XAML Storyboard.TargetProperty . |
Присоединенные свойства
TargetName |
Получает или задает имя объекта для анимации. |
TargetProperty |
Возвращает или задает свойство, которое необходимо анимировать. |
Методы
Begin() |
Инициирует набор анимаций, связанных с раскадровкой. |
ClearValue(DependencyProperty) |
Очищает локальное значение свойства зависимостей. (Унаследовано от DependencyObject) |
GetAnimationBaseValue(DependencyProperty) |
Возвращает любое базовое значение, установленное для свойства зависимостей, которое применяется в случаях, когда анимация не активна. (Унаследовано от DependencyObject) |
GetCurrentState() |
Возвращает состояние часов раскадровки. |
GetCurrentTime() |
Возвращает текущее время анимации раскадровки. |
GetTargetName(Timeline) |
Возвращает значение присоединенного свойства XAML Storyboard.TargetName из целевого элемента. |
GetTargetProperty(Timeline) |
Возвращает значение присоединенного свойства XAML Storyboard.TargetProperty из целевого элемента. |
GetValue(DependencyProperty) |
Возвращает текущее действующее значение свойства зависимостей из DependencyObject. (Унаследовано от DependencyObject) |
Pause() |
Приостанавливает часы анимации, связанные с раскадровкой. |
ReadLocalValue(DependencyProperty) |
Возвращает локальное значение свойства зависимостей, если задано локальное значение. (Унаследовано от DependencyObject) |
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback) |
Регистрирует функцию уведомления для прослушивания изменений определенной DependencyProperty в этом экземпляре DependencyObject . (Унаследовано от DependencyObject) |
Resume() |
Возобновляет часы анимации или состояние времени выполнения, связанные с раскадровкой. |
Seek(TimeSpan) |
Перемещает раскадровку в указанную позицию анимации. Раскадровка выполняет запрошенный поиск при возникновении следующего такта часов. |
SeekAlignedToLastTick(TimeSpan) |
Немедленно перемещает раскадровку в указанную позицию анимации (синхронно). |
SetTarget(Timeline, DependencyObject) |
Указывает, что указанная временная шкала будет нацелена на указанный объект. |
SetTargetName(Timeline, String) |
Задает значение присоединенного свойства XAML Storyboard.TargetName для целевого элемента. |
SetTargetProperty(Timeline, String) |
Задает значение присоединенного свойства XAML Storyboard.TargetProperty для целевого элемента. |
SetValue(DependencyProperty, Object) |
Задает локальное значение свойства зависимостей для Объекта DependencyObject. (Унаследовано от DependencyObject) |
SkipToFill() |
Перемещает текущее время часов раскадровки до конца активного периода. |
Stop() |
Останавливает раскадровку. |
UnregisterPropertyChangedCallback(DependencyProperty, Int64) |
Отменяет уведомление об изменениях, которое было ранее зарегистрировано путем вызова метода RegisterPropertyChangedCallback. (Унаследовано от DependencyObject) |
События
Completed |
Происходит после завершения воспроизведения объекта Storyboard . (Унаследовано от Timeline) |
Применяется к
См. также раздел
- Timeline
- TimelineCollection
- Storyboard
- Storyboard
- Раскадрованные анимации
- Раскадрованные анимации для визуальных состояний
- Анимации по ключевым кадрам и на основе функций для реалистичной анимации
- Краткое руководство: анимация пользовательского интерфейса с помощью анимаций библиотеки
- Синтаксис Property-path
- Общие сведения о присоединенных свойствах