Un gran recurso para enriquecer la experiencia del usuario son las animaciones. Ya sean decorativas o interactivas, las animaciones realzan el aspecto visual de tu interfaz y pueden atraer la atención del usuario de forma fácil. Para los que no pudieron asistir a la 2da reunión prescencial de La Liga Silverglight, aquí les dejo un poco de lo que se expuso.

En Silverlight, las animaciones consisten en modificar propiedades de objetos. Dichas modificaciones ocurren sobre un periodo de tiempo. Este cambio de valor de una propiedad sobre un período de tiempo forma el efecto de animación ante el ojo humano.

¿Qué necesitamos para hacer una animación?

Básicamente necesitamos 3 cosas:

  • El tipo de animación (DoubleAnimation, ColorAnimation, etc…)
  • El Storyboard (el guión de nuestra animación)
  • Un evento que inicie la animación

Veamos un ejemplo rápido de un rectángulo que se desvanece cuando le damos clic:

Page.xaml

1
&lt;UserControl x:Class=<span style="color: #006080;">"AnimacionesDemo1.Page"</span>


1
xmlns=<span style="color: #006080;">"http://schemas.microsoft.com/winfx/2006/xaml/presentation"</span>


1
xmlns:x=<span style="color: #006080;">"http://schemas.microsoft.com/winfx/2006/xaml"</span> &gt;


1
&lt;UserControl.Resources&gt;


1
&lt;Storyboard x:Name=<span style="color: #006080;">"rectangulea"</span> &gt;


1
&lt;DoubleAnimation From=<span style="color: #006080;">"1.0"</span>


1
To=<span style="color: #006080;">"0.0"</span>


1
Duration=<span style="color: #006080;">"0:0:1"</span>


1
AutoReverse=<span style="color: #006080;">"True"</span>


1
Storyboard.TargetName=<span style="color: #006080;">"rectangulo"</span>


1
Storyboard.TargetProperty=<span style="color: #006080;">"Opacity"</span> /&gt;


1
&lt;/Storyboard&gt;


1
&lt;/UserControl.Resources&gt;


1
&lt;Grid x:Name=<span style="color: #006080;">"LayoutRoot"</span> Background=<span style="color: #006080;">"White"</span>&gt;


1
&lt;Rectangle x:Name=<span style="color: #006080;">"rectangulo"</span>


1
Width=<span style="color: #006080;">"100"</span>


1
Height=<span style="color: #006080;">"100"</span>


1
Fill=<span style="color: #006080;">"Green"</span> /&gt;


1
&lt;/Grid&gt;


1
&lt;/UserControl&gt;

Page.xaml.cs

1
<span style="color: #0000ff;">namespace</span> AnimacionesDemo1


1
{


1
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">partial</span> <span style="color: #0000ff;">class</span> Page : UserControl


1
{


1
<span style="color: #0000ff;">public</span> Page()


1
{


1
InitializeComponent();


1
rectangulo.MouseLeftButtonUp += <span style="color: #0000ff;">new</span> MouseButtonEventHandler(rectangulo_MouseLeftButtonUp);


1
}


An error has occurred. Please try again later.


1
<span style="color: #0000ff;">void</span> rectangulo_MouseLeftButtonUp(<span style="color: #0000ff;">object</span> sender, MouseButtonEventArgs e)


1
{


1
<span style="color: #0000ff;">this</span>.rectangulea.Begin();


1
}


1
}


1
}

Aquí tenemos el resultado:

Vamos explicando un poco el proceso. Primero tenemos el rectángulo, lo importante aquí es que nuestro elemento a animar debe estar nombrado para que lo podramos referenciar.

Después necesitamos un Storyboard. Toda animación necesita de un Storyboard ya que es este el elemento desde donde podemos iniciar, detener, pausar o lo que necesitemos hacer con la animación. Un storyboard puede contener una o varias animaciones.

A continuación tenemos la DoubleAnimation, esta es la que tiene el qué y el quién de la animación. Por medio de las dos propiedades adjuntas Storyboard.TargetName y Storyboard.TargetProperty definimos qué objecto y qué propiedad del objeto vamos a animar. En este caso vamos a trabajar con el objeto de nombre “rectangulo” y su propiedad Opacity. Esta propiedad acepta valores del 0.0 al 1.0 y represente el porcentaje de opacidad del objeto (1.0 es color sólido y 0.0 es totalmente transparente). Los atributos From, To y Duration indican que el valor de la propiedad irá de 1.0 a 0.0 en 1 segundo. Finalmente, AutoReverse es para indicar que el objeto regresará a su estado original (ejecutando la animación en reversa) una vez que esta haya terminado.

Una vez que tenemos terminado el Storyboard procedemos a definir el momento en que se ejecutará. En este ejemplo, agregaremos un manejador al evento MouseLeftButtonUp. En el manejador de dicho evento todo lo que tenemos que hacer es invocar el método Begin() de nuestro Storyboard.

¡Y listo! tenemos nuestra primera animación el Silverlight. En las próximas semanas estaré tocando más a fondo este interesante tema. Cualquier duda, comentario o sugerencia que tengan sobre este y otro temas no duden en dejar un comentario o escribirme a Arturo.Molina@ligasilverlight.com