FrameworkElement.BeginStoryboard Método
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í.
Comienza la secuencia de acciones contenidas en el guión gráfico proporcionado.
Sobrecargas
BeginStoryboard(Storyboard) |
Comienza la secuencia de acciones contenidas en el guión gráfico proporcionado. |
BeginStoryboard(Storyboard, HandoffBehavior) |
Comienza la secuencia de acciones contenidas en el guión gráfico proporcionado, con opciones especificadas para lo que debe ocurrir si la propiedad ya está animada. |
BeginStoryboard(Storyboard, HandoffBehavior, Boolean) |
Comienza la secuencia de acciones contenidas en el guión gráfico proporcionado, con el estado especificado para el control de la animación después de iniciarse. |
BeginStoryboard(Storyboard)
Comienza la secuencia de acciones contenidas en el guión gráfico proporcionado.
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
Public Sub BeginStoryboard (storyboard As Storyboard)
Parámetros
- storyboard
- Storyboard
Guión gráfico que se va a comenzar.
Ejemplos
En el ejemplo siguiente se recupera un Storyboard de recursos y, a continuación, se ejecuta ese Storyboard cuando se controla una clase de evento interno.
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
Comentarios
La mayoría de los escenarios de animación típicos no usan este método. Normalmente, se crea el elemento Storyboard o BeginStoryboard en el marcado y, a continuación, se colocan como el contenido de EventTrigger en un elemento. Cuando el evento lo desencadena, se ejecuta la animación. La mayoría de los aspectos de control de un Storyboard se pueden abordar mediante propiedades que se exponen en el marcado.
Para las firmas que no usan el isControllable
, parámetro o cuando se especifica ese parámetro false
, los relojes de escala de tiempo asociados a la animación se quitan en cuanto la animación alcanza el período "Fill". Por lo tanto, la animación no se puede reiniciar después de ejecutarse una vez. Controlar una animación también requiere que el guión gráfico tenga un directiva x:Name o sea accesible por referencia en el código.
Se aplica a
BeginStoryboard(Storyboard, HandoffBehavior)
Comienza la secuencia de acciones contenidas en el guión gráfico proporcionado, con opciones especificadas para lo que debe ocurrir si la propiedad ya está animada.
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
Public Sub BeginStoryboard (storyboard As Storyboard, handoffBehavior As HandoffBehavior)
Parámetros
- storyboard
- Storyboard
Guión gráfico que se va a comenzar.
- handoffBehavior
- HandoffBehavior
Valor de la enumeración que describe el comportamiento que se va a usar si una propiedad descrita en el guión gráfico ya está animada.
Ejemplos
En el ejemplo siguiente se recupera un Storyboard de recursos y, a continuación, se ejecuta ese Storyboard cuando se controla una clase de evento interno.
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
Comentarios
La mayoría de los escenarios de animación típicos no usan este método. Normalmente, se crea el elemento Storyboard o BeginStoryboard en el marcado y, a continuación, se colocan como el contenido de EventTrigger en un elemento. Cuando el evento lo desencadena, se ejecuta la animación. La mayoría de los aspectos de control de un Storyboard se pueden abordar mediante propiedades que se exponen en el marcado.
Para las firmas que no usan el isControllable
, parámetro o cuando se especifica ese parámetro false
, los relojes de escala de tiempo asociados a la animación se quitan en cuanto la animación alcanza el período "Fill". Por lo tanto, la animación no se puede reiniciar después de ejecutarse una vez. Controlar una animación también requiere que el guión gráfico tenga un directiva x:Name o sea accesible por referencia en el código.
El comportamiento de entrega se puede especificar como un atributo de BeginStoryboard.
Uso de Compose HandoffBehavior
Cuando se aplica un Storyboard, AnimationTimelineo AnimationClock a una propiedad mediante el ComposeHandoffBehavior, los objetos Clock asociados previamente a esa propiedad siguen usando los recursos del sistema; el sistema de control de tiempo no quita automáticamente los relojes.
Para evitar problemas de rendimiento al aplicar un gran número de relojes mediante Compose, debe quitar la composición de los relojes de la propiedad animada después de que se completen. Hay varias maneras de quitar un reloj:
Para quitar todos los relojes de una propiedad, use el método ApplyAnimationClock(DependencyProperty, AnimationClock) o BeginAnimation(DependencyProperty, AnimationTimeline) del objeto animado. Especifique la propiedad que se está animando como primer parámetro y
null
como segundo. Esto quita todos los relojes de animación de la propiedad .Para quitar un AnimationClock específico de una lista de relojes, use la propiedad Controller del AnimationClock para recuperar un ClockControllery, a continuación, llame al método Remove del ClockController. Normalmente, esto se hace en el controlador de eventos Completed para un reloj. Tenga en cuenta que solo un ClockControllerpuede controlar los relojes raíz; la propiedad Controller de un reloj secundario devuelve
null
. Tenga en cuenta también que el evento Completed no se genera si la duración efectiva del reloj es indefinida. En ese caso, el usuario debe determinar cuándo llamar a Remove.
Esto es principalmente un problema para animaciones en objetos que tienen una larga duración. Cuando se recopila un objeto, sus relojes también se desconectan y se recopilan elementos no utilizados.
Para obtener más información sobre los objetos de reloj, vea Animation and Timing System Overview.
Se aplica a
BeginStoryboard(Storyboard, HandoffBehavior, Boolean)
Comienza la secuencia de acciones contenidas en el guión gráfico proporcionado, con el estado especificado para el control de la animación después de iniciarse.
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
Public Sub BeginStoryboard (storyboard As Storyboard, handoffBehavior As HandoffBehavior, isControllable As Boolean)
Parámetros
- storyboard
- Storyboard
Guión gráfico que se va a comenzar.
- handoffBehavior
- HandoffBehavior
Valor de la enumeración que describe el comportamiento que se va a usar si una propiedad descrita en el guión gráfico ya está animada.
- isControllable
- Boolean
Declara si la animación es controlable (se puede pausar) después de iniciarse.
Comentarios
La mayoría de los escenarios de animación típicos no usan este método. Normalmente, se crea el elemento Storyboard o BeginStoryboard en el marcado y, a continuación, se colocan como el contenido de EventTrigger en un elemento. Cuando el evento lo desencadena, se ejecuta la animación. La mayoría de los aspectos de control de un Storyboard se pueden abordar mediante propiedades que se exponen en el marcado.
Para las firmas que no usan el isControllable
, parámetro o cuando se especifica ese parámetro false
, los relojes de escala de tiempo asociados a la animación se quitan en cuanto la animación alcanza el período "Fill". Por lo tanto, la animación no se puede reiniciar después de ejecutarse una vez. Controlar una animación también requiere que el guión gráfico tenga un directiva x:Name o sea accesible por referencia en el código.
El comportamiento de entrega se puede especificar como un atributo de BeginStoryboard.
Uso de Compose HandoffBehavior
Cuando se aplica un Storyboard, AnimationTimelineo AnimationClock a una propiedad mediante el ComposeHandoffBehavior, los objetos Clock asociados previamente a esa propiedad siguen usando los recursos del sistema; el sistema de control de tiempo no quita automáticamente los relojes.
Para evitar problemas de rendimiento al aplicar un gran número de relojes mediante Compose, debe quitar la composición de los relojes de la propiedad animada después de que se completen. Hay varias maneras de quitar un reloj:
Para quitar todos los relojes de una propiedad, use el método ApplyAnimationClock(DependencyProperty, AnimationClock) o BeginAnimation(DependencyProperty, AnimationTimeline) del objeto animado. Especifique la propiedad que se está animando como primer parámetro y
null
como segundo. Esto quita todos los relojes de animación de la propiedad .Para quitar un AnimationClock específico de una lista de relojes, use la propiedad Controller del AnimationClock para recuperar un ClockControllery, a continuación, llame al método Remove del ClockController. Normalmente, esto se hace en el controlador de eventos Completed para un reloj. Tenga en cuenta que solo un ClockControllerpuede controlar los relojes raíz; la propiedad Controller de un reloj secundario devuelve
null
. Tenga en cuenta también que el evento Completed no se genera si la duración efectiva del reloj es indefinida. En ese caso, el usuario debe determinar cuándo llamar a Remove.
Esto es principalmente un problema para animaciones en objetos que tienen una larga duración. Cuando se recopila un objeto, sus relojes también se desconectan y se recopilan elementos no utilizados.
Para obtener más información sobre los objetos de reloj, vea Animation and Timing System Overview.