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 |
<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> > |
|
1 |
<UserControl.Resources> |
|
1 |
<Storyboard x:Name=<span style="color: #006080;">"rectangulea"</span> > |
|
1 |
<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> /> |
|
1 |
</Storyboard> |
|
1 |
</UserControl.Resources> |
|
1 |
<Grid x:Name=<span style="color: #006080;">"LayoutRoot"</span> Background=<span style="color: #006080;">"White"</span>> |
|
1 |
<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> /> |
|
1 |
</Grid> |
|
1 |
</UserControl> |
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




9 comments
La Liga Silverlight » Animaciones con Silverlight, parte II says:
Apr 2, 2009
[...] el post anterior usamos From y To para definir de donde a donde iba a variar el valor de la propiedad. También [...]
Animaciones con Silverlight, parte II - JAmolina.com says:
Jul 8, 2009
[...] el post anterior usamos From y To para definir de donde a donde iba a variar el valor de la propiedad. También [...]
lila says:
Sep 25, 2009
Muy buena explicación, gracias.
will says:
Jun 1, 2010
Hola, muchas gracias por la publicacion, pero tengo un problemita, estoy trabajando con visual web developer 2008 y silverlight 2, creo normalente la parte del xaml lo raro es q en el momento que voy a crear el codigo del .cs no me reconoce el rectangulo, q codigo tengo q añadir para q lo reconozca q estoy haciendo mal? muchas gracias
admin says:
Jun 1, 2010
Will,
Sinceramente te recomendamos usar Silverlight 4, ya que tiene muchas más características y funcionalidades. También, descarga VWD 2010 el cual es gratuito!!!
Arturo Molina says:
Jun 3, 2010
Hola Will, ¿Si nombraste el rectangulo en tu XAML? Debes incluir algo como:
x:Name=”rectangulo”
Para poder referenciarlo desde código.
will says:
Jun 3, 2010
hola Arturo
si lo nombre, pero resulta q cuando abri de nuevo el proyecto ya podia ver el rectangulo desde el codebehind, de modo que hice la siguiente prueba; cree un rectangulo y cerre las pestañas del .cs y .xaml, las volvi abrir y ya puedo ver el rectangulo en el codebehind….
Esta muy buena la pag felicitaciones….
Pablo says:
Oct 19, 2010
El ejemplo 1 ya no es accesible desde el post.
Un saludo
Arturo Molina says:
Nov 12, 2010
Tienes razón Pablo, volveré a subir los ejemplos. Gracias!