Storyboard Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Controla las animaciones con una escala de tiempo y proporciona información de objetos y propiedades dirigidas a sus animaciones secundarias.
public ref class Storyboard sealed : Timeline
/// [Microsoft.UI.Xaml.Markup.ContentProperty(Name="Children")]
/// [Windows.Foundation.Metadata.Activatable(65536, "Microsoft.UI.Xaml.WinUIContract")]
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class Storyboard final : Timeline
[Microsoft.UI.Xaml.Markup.ContentProperty(Name="Children")]
[Windows.Foundation.Metadata.Activatable(65536, "Microsoft.UI.Xaml.WinUIContract")]
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class Storyboard : Timeline
Public NotInheritable Class Storyboard
Inherits Timeline
<Storyboard ...>
oneOrMoreChildTimelines
</Storyboard>
- Herencia
- Atributos
Ejemplos
En el ejemplo siguiente se muestra cómo usar los métodos Begin, Stop, Pause y Resume para controlar la reproducción de un guión gráfico (animación). Un conjunto de botones permite al usuario llamar a estos métodos.
<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();
}
En este ejemplo se muestra cómo crear y ejecutar una animación completamente en el código.
<Button Content="Create animation" Click="Button_Click"/>
private void Button_Click(object sender, RoutedEventArgs e)
{
Create_And_Run_Animation();
}
private void Create_And_Run_Animation()
{
Storyboard justintimeStoryboard = null;
// If the storyboard already exists in the resources dictionary,
// get it and make sure it's stopped.
if (LayoutRoot.Resources.ContainsKey("justintimeStoryboard"))
{
justintimeStoryboard = (Storyboard)LayoutRoot.Resources["justintimeStoryboard"];
justintimeStoryboard.Stop();
}
// Otherwise, create the storyboard and add it to the resources dictionary.
else
{
// 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;
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();
}
Comentarios
Storyboard es una clase importante en el concepto de animaciones con guion gráfico. Para obtener más información sobre el concepto, consulta Animaciones con guion gráfico.
Storyboard se usa para estas propiedades:
Estas propiedades no son el único lugar donde se define un Guión gráfico. La forma típica de usar un Guión gráfico para una animación de guion gráfico es que el Guión gráfico se define en una colección Resources ( Application.Resources o FrameworkElement.Resources, o posiblemente como un recurso dentro de un archivo como Generic.xaml para un control personalizado). Siempre que se define como un recurso XAML, siempre debes asignar un valor de atributo x:Name a storyboard. A continuación, puede hacer referencia al nombre como una variable de programación más adelante en código subyacente. Necesitará esta referencia para ejecutar realmente las animaciones que contiene storyboard llamando al método Begin en esa instancia de Storyboard. Storyboard también tiene otros métodos de control, como Stop , que pueden controlar la animación posteriormente.
Storyboard hereda varias propiedades de Timeline. Estas propiedades se pueden aplicar a un Guión gráfico o a una de las animaciones que contiene (en la colección Children ). Hay ventajas y desventajas para establecer las propiedades timeline en el guión gráfico principal en lugar de en cada animación. Para obtener más información, consulta Animaciones con guion gráfico.
También necesitas un Guión gráfico para controlar las animaciones predefinidas que agregas a controles o interfaz de usuario, si usas una de las animaciones de tema. Las animaciones de tema no tienen un punto de desencadenador innato, por lo que debes contener animaciones de tema en un Guión gráfico como los niños. Si el guión gráfico se usa como valor de VisualState.Storyboard , la animación se ejecuta cuando se carga ese estado visual. O bien, si está en un VisualTransition.Storyboard, la animación se ejecuta cuando el administrador de estado visual detecta esa transición. Se trata de la forma más común de usar una animación de tema, pero también se puede colocar uno en un recurso de Guión gráfico flexible e iniciar explícitamente la animación llamando a Begin.
Propiedades adjuntas xaml
Storyboard es la clase de servicio host para varias propiedades adjuntas xaml. Estas habilitan las animaciones secundarias bajo control por parte del Guión gráfico para cada elemento de destino independiente y propiedades de destino, a la vez que siguen siguiendo la misma escala de tiempo de control y mecanismo de desencadenador que el elemento primario.
Para admitir el acceso del procesador XAML a las propiedades adjuntas y también para exponer operaciones equivalentes de obtención y establecimiento del código, cada propiedad adjunta XAML tiene un par de métodos de descriptor de acceso Get y Set. Otra manera de obtener o establecer el valor en el código es usar el sistema de propiedades de dependencia, llamar a GetValue o SetValue y pasar el campo de identificador como identificador de propiedad de dependencia.
| Propiedad adjunta | Description |
|---|---|
| TargetName | Obtiene o establece el nombre del objeto que se va a animar.
El significado de lascadenas de atributo Name /x:Name se controla mediante un concepto de ámbito de nombres XAML. Para la mayoría de los escenarios de destino de animación, no tendrás que preocuparte por la influencia de los ámbitos de nombres XAML, pero es posible que encuentres problemas de resolución de nombres XAML si intentas dirigir elementos de plantilla o objetos que se crearon con XamlReader.Load y, posteriormente, se agregaron al árbol de objetos. Para obtener más información, consulta Ámbitos de nombres XAML. |
| TargetProperty | Obtiene o establece la propiedad que se debe animar.
|
Constructores
| Nombre | Description |
|---|---|
| Storyboard() |
Inicializa una nueva instancia de la clase Storyboard . |
Propiedades
| Nombre | Description |
|---|---|
| AutoReverse |
Obtiene o establece un valor que indica si la escala de tiempo se reproduce inverso después de completar una iteración hacia delante. (Heredado de Timeline) |
| BeginTime |
Obtiene o establece la hora en la que debe comenzar esta escala de tiempo . (Heredado de Timeline) |
| Children |
Obtiene la colección de objetos Timeline secundarios. |
| Dispatcher |
Siempre devuelve |
| DispatcherQueue |
Obtiene el objeto |
| Duration |
Obtiene o establece el período de tiempo durante el que se reproduce esta escala de tiempo, sin contar repeticiones. (Heredado de Timeline) |
| FillBehavior |
Obtiene o establece un valor que especifica cómo se comporta la animación después de que llegue al final de su período activo. (Heredado de Timeline) |
| RepeatBehavior |
Obtiene o establece el comportamiento repetido de esta escala de tiempo. (Heredado de Timeline) |
| SpeedRatio |
Obtiene o establece la velocidad, en relación con su elemento primario, en el que avanza el tiempo de esta escala de tiempo. (Heredado de Timeline) |
| TargetNameProperty |
Identifica la propiedad adjunta XAML Storyboard.TargetName . |
| TargetPropertyProperty |
Identifica la propiedad adjunta XAML Storyboard.TargetProperty . |
Propiedades adjuntas
| Nombre | Description |
|---|---|
| TargetName |
Obtiene o establece el nombre del objeto que se va a animar. |
| TargetProperty |
Obtiene o establece la propiedad que se debe animar. |
Métodos
| Nombre | Description |
|---|---|
| Begin() |
Inicia el conjunto de animaciones asociadas al guión gráfico. |
| ClearValue(DependencyProperty) |
Borra el valor local de una propiedad de dependencia. (Heredado de DependencyObject) |
| GetAnimationBaseValue(DependencyProperty) |
Devuelve cualquier valor base establecido para una propiedad de dependencia, que se aplicaría en los casos en los que una animación no está activa. (Heredado de DependencyObject) |
| GetCurrentState() |
Obtiene el estado del reloj del Guión gráfico. |
| GetCurrentTime() |
Obtiene la hora del reloj de animación actual del guión gráfico. |
| GetTargetName(Timeline) |
Obtiene el valor de la propiedad adjunta XAML Storyboard.TargetName de un elemento de destino. |
| GetTargetProperty(Timeline) |
Obtiene el valor de la propiedad adjunta XAML Storyboard.TargetProperty de un elemento de destino. |
| GetValue(DependencyProperty) |
Devuelve el valor efectivo actual de una propiedad de dependencia de dependencyObject. (Heredado de DependencyObject) |
| Pause() |
Pausa el reloj de animación asociado al guión gráfico. |
| ReadLocalValue(DependencyProperty) |
Devuelve el valor local de una propiedad de dependencia, si se establece un valor local. (Heredado de DependencyObject) |
| RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback) |
Registra una función de notificación para escuchar los cambios en una dependencyProperty específica en esta instancia de DependencyObject . (Heredado de DependencyObject) |
| Resume() |
Reanuda el reloj de animación o el estado en tiempo de ejecución, asociado al guión gráfico. |
| Seek(TimeSpan) |
Mueve el guión gráfico a la posición de animación especificada. El guión gráfico realiza la búsqueda solicitada cuando se produce el siguiente tic del reloj. |
| SeekAlignedToLastTick(TimeSpan) |
Mueve el guión gráfico a la posición de animación especificada inmediatamente (sincrónicamente). |
| SetTarget(Timeline, DependencyObject) |
Hace que la escala de tiempo especificada se dirija al objeto especificado. |
| SetTargetName(Timeline, String) |
Establece el valor de la propiedad adjunta XAML Storyboard.TargetName para un elemento de destino. |
| SetTargetProperty(Timeline, String) |
Establece el valor de la propiedad adjunta XAML Storyboard.TargetProperty para un elemento de destino. |
| SetValue(DependencyProperty, Object) |
Establece el valor local de una propiedad de dependencia en dependencyObject. (Heredado de DependencyObject) |
| SkipToFill() |
Avanza la hora actual del reloj del guión gráfico hasta el final de su período activo. |
| Stop() |
Detiene el guión gráfico. |
| UnregisterPropertyChangedCallback(DependencyProperty, Int64) |
Cancela una notificación de cambio registrada anteriormente llamando a RegisterPropertyChangedCallback. (Heredado de DependencyObject) |
Eventos
| Nombre | Description |
|---|---|
| Completed |
Se produce cuando el objeto Storyboard se ha completado la reproducción. (Heredado de Timeline) |