none
Problema con Animaciones RRS feed

  • Pregunta

  • Hola Buenas.

    Os cuento, soy nuevo en el manejo de eventos de C# y en las animaciones también. De modo que estoy teniendo un problema:

    Yo defino una animación que la aplico a una forma, en este caso a un objeto rectangulo de la siguiente manera:

    <Storyboard x:Name="AnimacionTamaNo">
    				<DoubleAnimationUsingKeyFrames Storyboard.TargetName="RectanguloAnimado"
    								 Storyboard.TargetProperty="Width">
    					<DiscreteDoubleKeyFrame KeyTime="00:00:0.2" Value="320"/>
    					<DiscreteDoubleKeyFrame KeyTime="00:00:0.4" Value="300"/>
    					<EasingDoubleKeyFrame KeyTime="00:00:0.4"/>
    				</DoubleAnimationUsingKeyFrames>
    
    				<DoubleAnimationUsingKeyFrames Storyboard.TargetName="RectanguloAnimado"
    								 Storyboard.TargetProperty="Height">
    					<DiscreteDoubleKeyFrame KeyTime="00:00:0.2" Value="320"/>
    					<DiscreteDoubleKeyFrame KeyTime="00:00:0.4" Value="300"/>
    					<EasingDoubleKeyFrame KeyTime="00:00:0.4"/>
    				</DoubleAnimationUsingKeyFrames>
    				
    			</Storyboard>

    siendo el nombre del objeto rectangle "Rectangulo animado".

    Bien, yo inicio la animación al rectangulo de la siguiente manera:

    <Rectangle Name="RectanguloAnimado" Width="300" Height="300" Fill="Navy" MouseLeftButtonUp ="rect_mouseEnter">

    y en el código de C# asociado la función es la siguiente:

    private void rect_mouseEnter(object sender, MouseEventArgs e)
    		{			
    			Storyboard AnimacionTamaNo = this.FindName("AnimacionTamaNo") as Storyboard;
    			Storyboard.SetTarget(AnimacionTamaNo, sender as DependencyObject);
    		AnimacionTamaNo.Begin();
    }

    Tengo el problema de que la animación la puedo hacer una vez, sin embargo la segunda vez que la hago la aplicación deja de funcionar. Creo que es porque he ce hacer algo del estilo 

    AnimacionTamaNo.Stop();

    Y estoy intentando, para ello, capturar el evento "Completed" que creo, es el que emite la animación al terminar. Sin embargo soy incapaz de capturar ese evento.

    ¿Alguien podría echarme un cable? se que es muy básico, pero es que mis conocimientos tambien.

    Muchas gracias

    miércoles, 12 de septiembre de 2012 9:39

Respuestas

  • ¡Hola!

    Intenta los siguiente:

    <Storyboard x:Name="AnimacionTamaNo" Completed="onCompleted">

    Y luego en el behind-code:

    function onCompleted(sender, eventArgs) { AnimacionTamaNo.Stop(); }

    Aunque hubiera ayudado que hubieras puesto cómo realizas la siguiente llamada a la animación.

    Un saludo,

    • Marcado como respuesta quiqueroal miércoles, 12 de septiembre de 2012 11:20
    miércoles, 12 de septiembre de 2012 10:44

Todas las respuestas

  • ¡Hola!

    Intenta los siguiente:

    <Storyboard x:Name="AnimacionTamaNo" Completed="onCompleted">

    Y luego en el behind-code:

    function onCompleted(sender, eventArgs) { AnimacionTamaNo.Stop(); }

    Aunque hubiera ayudado que hubieras puesto cómo realizas la siguiente llamada a la animación.

    Un saludo,

    • Marcado como respuesta quiqueroal miércoles, 12 de septiembre de 2012 11:20
    miércoles, 12 de septiembre de 2012 10:44
  • Muchas gracias!! me funciona perfectamente!

    Pero fijate que cabeza la mia que estaba capturando el mouseLeftButtonUp y no me puse a capturar el completed de la misma manera... muchas gracias!

    Y es que la sigueinte llamada a la animación era igual, cuando clicaba sobre el rectangulo, pero cuando clicaba para entonces no se había parado la animación del clic anterior y... crash.

    Muchas gracias de nuevo!

    miércoles, 12 de septiembre de 2012 11:22