PDF de programación - Novedades de Silverlight 5

Novedades de Silverlight 5gráfica de visualizaciones

Publicado el 14 de Enero del 2017
386 visualizaciones desde el 14 de Enero del 2017
832,0 KB
8 paginas
Creado hace 12a (18/07/2011)
Novedades de Silverlight 5

Como viene siendo norma, en el recién finalizado evento MIX, celebrado en Las Vegas, Estados
Unidos, se anunció la liberación de la beta de Silverlight 5, con un montón de novedades muy
interesantes, que presentamos aquí.

t

al y como Microsoft ya había anun-
ciado a principios del pasado diciembre en even-
to online Silverlight Firestarter, en el marco del
MIX’2011 se liberó la beta de Silverlight 5, aña-
diendo nuevas características que incrementan
sustancialmente el rendimiento y la productividad
de la plataforma, tanto a nivel del plug-in como
para los que desarrollamos con ella. Gran parte
de estas novedades aparecen como respuesta a
peticiones de la comunidad mediante el uservoi-
ce1 disponible en la URL http://dotnet.uservoi‐
ce.com/forums/4325‐silverlight‐feature‐sug‐
gestions, una demostración de democracia digi-
tal que parece estar funcionando muy bien y que
desde aquí animo al lector a visitar.

Antes de ver las novedades aparecidas en la beta
de Silverlight 5, debemos tener en cuenta que esta-
mos hablando de una versión de prueba, por lo que
no es recomendable desplegarla en una máquina
de producción. Es mucho mejor poder disponer de
una máquina física sobre la que instalar las betas,
por rendimiento y capacidad; pero si no, siempre
podemos montar una máquina virtual para ello,
aunque no disfrutaremos de las capacidades 3D, ya
que éstas se basan en un acceso directo a la GPU.
Para empezar, descargue e instale la beta de Sil-
verlight 5 y las Silverlight 5 Beta Tools for Visual
Studio SP1 desde la página oficial [1], donde adi-
cionalmente encontrará otras descargas muy inte-
resantes como Expression Blend Preview for Sil-
verlight 5, Silverlight 5 Beta SDK y WCF RIA Ser-
vices for Silverlight 5 Beta.

Entrando en materia, a continuación vamos a
ver en detalle y de forma ejemplificada algunas de
las principales novedades que ofrece la beta de Sil-
verlight 5.
Herramientas

Aparte de las ya citadas herramientas para que Visual
Studio SP1 soporte Silverlight 5 (por supuesto,
mediante multi-targeting; es decir, podremos conti-
nuar desarrollando para otras versiones de Silverlight
que ya tuviéramos instaladas anteriormente), tene-
mos como principal novedad en esta área la depu-
ración de los enlaces a datos (bindings) en XAML.

Anteriormente, la forma de realizar una depu-
ración de los enlaces a datos se basaba en imple-
mentar un conversor ad-hoc y poner puntos de inte-
rrupción (breakpoints) dentro del mismo.

Veamos cómo lograr esto de manera más efec-

tiva en Silverlight 5 a través de un ejemplo.

Para ello, crearemos una nueva aplicación Sil-
verlight 5, a la que añadiremos dos clases: Cursos‐
Model, que albergará el contenido del curso (en este
caso, una simple propiedad de tipo string), y Cur‐
sos_ViewModel, que contendrá una propiedad de
tipo CursosModel. En el code-behind de MainPa‐
ge.xaml declararemos una variable de tipo Cur‐
sos_ViewModel, que asignaremos al DataContext
de MainPage en su constructor. El código puede ver-
se en el listado 1.

Seguidamente, en el XAML de MainPage, defi-
nimos un StackPanel que contiene un TextBlock,

1 Uservoice es un servicio de opinión abierta en el que una comunidad (usuarios, clientes, etc.) se convierten en "pro-
sumers" (consumidores y productores a la vez), y que ayuda a definir las necesidades y requisitos de un servicio o,
en nuestro caso, tecnología.

José Luis Latorre
CEO de Brainsiders y
profesor de Aula Vulcan.
Microsoft MVP & MCP

(CursosModel.cs)
public class CursosModel
{

}

public String NombreDelCurso { get; set; }

(Cursos_ViewModel.cs)
public class Cursos_ViewModel
{

public CursosModel CursoSeleccionado
{

get; set;

}

public Cursos_ViewModel()
{

CursoSeleccionado = new CursosModel() {

NombreDelCurso = "Introducción a Silverlight 5"

};

}

}

(MainPage.xaml.cs)
public partial class MainPage : UserControl
{

private Cursos_ViewModel Cursos = new Cursos_ViewModel();

public MainPage()
{

InitializeComponent();

this.DataContext = Cursos;

}

}

Listado 1

ofrece una información muy interesante
sobre el estado del binding (BindingState),
en la que podemos observar la acción que

<Grid x:Name="LayoutRoot"
Background="White">

<StackPanel>

<TextBlock Text=

"{Binding NombreDelCurso}">

</TextBlock>
</StackPanel>

</Grid>

Listado 2

al que enlazamos al campo NombreDel‐
Curso (ver listado 2).

Si ubicamos un punto de interrupción
en la línea de XAML que contiene el enlace
a datos, veremos que se marca un punto de
depuración y se resalta el binding en sí. Y si
ejecutamos la aplicación, veremos que ésta
se detiene exactamente en este punto y nos
indica, además, un error, como se puede
apreciar en la figura 1. Puede observar cómo
el punto de depuración es resaltado de for-
ma similar a cuando depuramos código, y

se está realizando, "Updating Target" (actua-
lizando el destino), así como los detalles del
error, donde podemos ver que Silverlight no
ha hallado la propiedad; además de todo
ello, también se nos muestra el FinalSour‐
ce del enlace a datos: ahora es cuando nos
damos cuenta de que nos hemos olvidado
de mencionar el objeto que contiene a esa
propiedad, con lo que el binding correcto
debería ser:

Text="{Binding CursoSeleccionado.

NombreDelCurso}"

Medios

Silverlight 5 Beta ofrece toda una serie
de mejoras en la parte de medios como
son: mejoras en la API de sonido y la
nueva clase SoundEffect para la ejecu-
ción de sonidos de baja latencia; la tec-
nología TrickPlay, para alcanzar velo-
cidades variables en la reproducción, lo
que, conjuntamente con un ajuste diná-
mico del tono de la voz, nos permite ver
vídeos a 2x, entendiendo perfectamen-
te las narraciones; y, además, la deco-
dificación por hardware y la presenta-
ción de H.264 con rendimiento mejo-
rado, basado en aceleración por GPU.
Para la release final también se esperan
mejoras en DRM (Digital Rights Mana-
gement), así como el soporte para sis-
temas de control remoto.

Figura 1

a
í
n
a
M
t
e
N
t
o
d

29

private void ReproducirSonido() {

SoundEffect Sonido;
var SonidoStream = Application.GetResourceStream(

new Uri("beep.wav", UriKind.RelativeOrAbsolute));
Sonido = SoundEffect.FromStream(SonidoStream.Stream);
SoundEffectInstance instance = Sonido.CreateInstance();
instance.Play();

}

Listado 3

La nueva clase SoundEffect

Parámetro

Valores

Un ejemplo práctico de aplicación de
estas propiedades sería disponer de un soni-
do con un volumen bajo ejecutándose per-
manentemente, como suelen hacer los soni-
dos de fondo. Para ello, asociaremos a un
botón una reproducción de sonido aso-
ciándole true a la propiedad IsLooped, un
valor bajo a Volume y un pitch también bajo,

Volume

0 a 1, siendo 1 el más alto posible.

-1 a 1, siendo -1 la frecuencia más baja y 1 la más alta.

-1 a 1, siendo -1 el desplazamiento de la potencia totalmente
a la izquierda y 1 el desplazamiento absoluto a la derecha.

Pitch

Pan

Tabla 1

SoundEffect SonidoDeFondo;
SoundEffect SonidoClick;

Una de las más interesantes es la
reproducción de sonidos de baja latencia,
lo que es vital para cuando queremos
reproducir de forma inmediata un soni-
do, por ejemplo, en respuesta a una
acción del usuario. Esto se ha consegui-
do mediante una clase que "sonará" bas-
tante a todos aquellos que se hayan intro-
ducido en el desarrollo para Windows Pho-
ne: la clase SoundEffect, proveniente de
XNA, que es de uso obligatorio para efec-
tos de sonido de baja latencia para jue-
gos o interfaces en este dispositivo móvil.
Esta clase, así como otras de XNA, han
sido integradas dentro del núcleo de Sil-
verlight 5, con lo que no necesitamos agre-
gar referencias a librerías externas.

Como ejemplo, agregaremos al pro-
yecto creado anteriormente un archivo de
tipo .WAV, en modo "contenido", como
puede observarse en el código que acom-
paña a este artículo. En el código, carga-
remos el archivo mediante el método
GetResourceStream del objeto Applica‐
tion, para continuar pasándole el Stre‐
am obtenido al método FromStream de la
clase SoundEffect, como puede apre-
ciarse en el listado 3.

Aunque esto pueda parecer sencillo,
SoundEffect requiere de archivos .WAV
codificados en modo PCM, 8 ó 16 bits en
mono o estéreo, y fallará si se le sumi-
nistran otros formatos, siendo estas limi-
taciones las mismas que en XNA o en
WP7.

Otro detalle interesante es que esta
clase nos permite controlar varias carac-
terísticas del sonido a reproducir: volu-
men, pitch (la frecuencia, que determina
si un sonido es agudo o grave) y pan (el
balance del sonido, que emula el dial de
los equipos de audio y nos permite ajus-

a
í
n
a
M
t
e
N
t
o
d

30

}

}

}

}

private void InicializarSonidos()
{

var SonidoStream = Application.GetResourceStream(

new Uri("beep.wav", UriKind.RelativeOrAbsolute));

SonidoClick = SoundEffect.FromStream(SonidoStream.Stream);
var SonidoStream2 = Application.GetResourceStream(

new Uri("Loop Banjo.wav", UriKind.RelativeOrAbsolute));

SonidoDeFondo = SoundEffect.FromStream(SonidoStream2.Stream);

void MainPage_Loaded(object sender, RoutedEventArgs e)
{

InicializarSonidos();

private void button1_Click(object sender, RoutedEventArgs e)
{

SoundEffectInstance instance = SonidoClick.CreateInstance();
instance.Play();

private void button2_Click(object sender, RoutedEventArgs e)
{

SoundEffectInstance instance = SonidoDeFondo.CreateInstance();
instance.IsLooped = true;
instance.Pitch = ‐0.5f;
instance.Volume = 0.2f;
instance.Play();

Listado 4

tar la potencia de los ejes izquierdo y dere-
cho del mismo). A las correspondientes
propiedades pueden asignársele valores
en los rangos que se indican en la tabla 1.

ya que se trata de un sonido "de fondo".
A un segundo botón asociaremos la repro-
ducción de otro sonido. Todo ello pode-
mos verlo en el listado 4.

Como observación, si el botón button2 se pulsa
varias veces, estaremos iniciando el sonido de fondo
repetidamente, creando diferentes instancias del mis-
mo efecto de sonido.

con un
  • Links de descarga
http://lwp-l.com/pdf238

Comentarios de: Novedades de Silverlight 5 (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad