Beruflich Dokumente
Kultur Dokumente
Aplicaciones
Mviles II
CARRERAS PROFESIONALES
CIBERTEC
NDICE
Pgina
Presentacin
Red de contenidos
Unidad de aprendizaje 1
CONSTRUYENDO UNA APLICACIN WINDOWS PHONE
1.1 Tema 1
11
11
15
17
1.1.4. : Laboratorio
19
1.2 Tema 2
32
32
32
1.2.3. : Laboratorio
38
1.3 Tema 3
55
55
60
1.3.3. : Laboratorio
66
Unidad de aprendizaje 2
ACCESO A DATOS POR WINDOWS PHONE 7
2.1 Tema 3
77
77
2.1.2. : Laboratorio
85
2.2 Tema 4
96
96
97
102
2.2.4. : Laboratorio
103
2.2 Tema 5
CIBERTEC
121
121
125
127
2.3.4. : Laboratorio
132
CARRERAS PROFESIONALES
Unidad de aprendizaje 3
DESARROLLANDO UNA APLICACIN XNA EN WINDOWS PHONE
3.1 Tema 6
: XNA
147
147
148
153
3.1.4. : Laboratorio
158
3.2 Tema 7
: Animacin en XNA
175
175
acelermetro
3.2.2. : Animacin por dispositivos de entrada
179
182
3.2.4. : Laboratorio
183
3.3 Tema 8
197
197
198
3.3.3. : Laboratorio
206
CARRERAS PROFESIONALES
CIBERTEC
PRESENTACIN
Desarrollo de Aplicaciones Moviles II pertenece a la lnea formativa y se dicta
en las carreras de tecnologas de la institucin. El curso brinda un conjunto de
herramientas de programacin para trabajar con una aplicacin mvil que
permita al alumno desarrollar aplicaciones para el manejo de datos y consulta de
datos remotas, as como el desarrollo de juegos para una aplicacin mvil en
forma eficiente.
El manual para el curso ha sido diseado bajo la modalidad de unidades de
aprendizaje, las que se desarrollan durante semanas determinadas. En cada una
de ellas, hallar los logros, que debe alcanzar al final de la unidad; el tema
tratado, el cual ser ampliamente desarrollado; y los contenidos, que debe
desarrollar, es decir, los subtemas. Por ltimo, encontrar las actividades y
trabajos prcticos que deber desarrollar en cada sesin, que le permitirn
reforzar lo aprendido en la clase.
El curso es eminentemente prctico: consiste en programacin C# implementado
en una aplicacin Windows Phone. La primera parte del manual nos ensea a
implementar las herramientas de SilverLight en una aplicacin Windows Phone
para el manejo de datos locales y remotos. En primer lugar, se inicia con el
reconocimiento de las caractersticas de SilverLight. Contina con el manejo de
las herramientas de SilverLight. Luego, vamos a realizar operaciones para el
manejo de datos locales y consulta de datos remotos utilizando Windows
Communication Foundation. La segunda parte del curso es la implementacin de
juegos utilizando XNA. En primer lugar, reconoceremos los objetos que trabajan
en una aplicacin de juegos; luego implementamos una aplicacin de juegos con
animacin. Se concluye con la realizacin de una aplicacin de juegos con
animacin con los formatos efectuados en el curso.
CIBERTEC
CARRERAS PROFESIONALES
CARRERAS PROFESIONALES
CIBERTEC
RED DE CONTENIDOS
Construyend
o una
aplicacin
Windows
Phone
Introduccion
WP7
CIBERTEC
Controles
SilverLight
Acceso a
datos por
Windows
Phone
Datos
locales
Datos
remoto y
WCF
Desarrolland
o
aplicaciones
XNA en
Windows
Phone
Objetos
Sprites
Animacin
CARRERAS PROFESIONALES
CARRERAS PROFESIONALES
CIBERTEC
UNIDAD DE
APRENDIZAJE
TEMARIO
Unidad de aprendizaje 1: Construyendo una Aplicacin Windows Phone
1.1 Tema 1 : Introduccin a Windows Phone
1.1.1. : Plataforma del Windows Phone
1.1.2. : Ciclo de vida de una Aplicacin Windows Phone
1.1.3. : Requerimientos de Windows Phone
1.2 Tema 2 : Trabajando con SilverLight en Windows Phone
1.2.1. : Introduccin a Silverlight
1.2.2. : Controles en SilverLight
1.2.3. : Laboratorio
1.3 Tema 3 : Navegando entre pginas, manejo de estados
1.3.1. : Navegando entre pginas
1.3.2. : Manejo de estados
1.3.3. : Laboratorio
ACTIVIDADES PROPUESTAS
Los alumnos implementarn una aplicacin Mobile para el manejo de imgenes,
videos y archivos de audio.
Los alumnos aprendern a navegar entre pginas, enviando datos entre ellas.
CIBERTEC
CARRERAS PROFESIONALES
10
CARRERAS PROFESIONALES
CIBERTEC
1.1
11
Excepcionalmente, el telfono cuenta con una versin de Microsoft Office que puede
utilizar para leer, editar, guardar y sincronizar los archivos de Word, hojas de clculo
Excel y otros formatos de Office, por lo que es un gran sistema operativo para el
telfono de aquellos que utilizan Office en casa o en la oficina. Windows Phone
tambin se puede integrar con Xbox Live, lo que lo convierte en una gran opcin para
los jugadores.
Microsoft Windows Phone utiliza el software de Zune para sincronizar las
aplicaciones instaladas, imgenes, msica, las copias de seguridad y actualizaciones
flash del sistema operativo.
CIBERTEC
CARRERAS PROFESIONALES
12
Para Windows Phone, el lenguaje elegido es C#. Los desarrolladores de Visual Basic
(VB) tendrn que esperar. En cuanto a un marco de desarrollo de aplicaciones, tiene
dos opciones: Silverlight o XNA. Silverlight y XNA utilizan la misma plataforma:
Framework .NET.
.NET Framework proporciona una base comn de biblioteca de clases que todos los
programadores .NET conocen, incluyendo soporte para multithreading, XML, LINQ,
colecciones, eventos, datos, excepciones, IO, modelo de servicio, manejo de redes,
manejo de texto, reflexin, internacionalizacin, recursos, manejo de hilos o threads, y
seguridad.
Silverlight
XNA
Por otro lado, XNA se utiliza principalmente para la creacin de juegos ya que viene
con motores especializados que permiten crear tanto juegos basados en bucles como
en 3D.
CARRERAS PROFESIONALES
CIBERTEC
13
Silverlight utiliza la tecnologa web que permite ver el contenido de las aplicaciones de
Internet as como la tecnologa Flash.
Tambin se utiliza Silverlight XAML, para crear grficos basados en vectores y crear
animaciones. Cualquier diseador familiarizado con las aplicaciones basadas en
vectores, como Adobe Illustrator y Microsoft Expression Design, puede crear
fcilmente elementos muy visuales exportarlos a XAML. Esto significa que los
diseadores tienen un control total sobre el diseo y la apariencia, lo que hace a
Silverlight una opcin muy potente para crear aplicaciones orientadas al consumidor.
XAML tambin proporciona una funcin de enlace de datos de gran alcance, por lo
que es ideal para crear aplicaciones orientadas a empresas.
Los juegos de XBOX son fcilmente instalados en una aplicacin Windows Phone. Lo
nico en lo que los desarrolladores de juegos de XBOX tienen que preocuparse es en
la resolucin de pantalla, la misma que se puede ajustar fcilmente. En tal sentido,
XNA proporciona un marco perfecto para el desarrollo de juegos en formato 2D y 3D.
Asimismo, tiene la capacidad de administrar de manera solvente los objetos del juego
tales como modelos, mallas, sprites, texturas, efectos, terrenos y animaciones.
CIBERTEC
CARRERAS PROFESIONALES
14
Microsoft dirige Windows Phone hacia los profesionales y para ello proporciona una
interfaz de usuario adecuada. En ese sentido, Microsoft desarroll un estilo de diseo
denominado METRO. Este estilo de diseo deriva de la industria del transporte, pues
se basa en los carteles informativos de los aeropuertos y, sobre todo, de las
CARRERAS PROFESIONALES
CIBERTEC
15
Developer
Application
Storefront
Deploy
Update
Reject
Feedback
Instal
Uninstall
Publish
Windows
Phone
Application
Purchase
Registration
Download
SDK
Guidelines
Content
Consumer
Rating
Comments
CIBERTEC
Manage
Application
Cetification
Signing
Submission
Reports
Analytics
Application
Category
CARRERAS PROFESIONALES
16
Como parte del proceso de certificacin, su aplicacin pasa a travs de una serie de
validaciones sobre la aplicacin misma y las polticas de contenido, tales como:
cdigo, idioma del telfono y requisitos de las imgenes. Tambin se hacen pruebas
de fiabilidad, rendimiento, gestin de recursos, uso de la funcionalidad de telfono y la
seguridad. La certificacin de la aplicacin es importante pues ayuda a promover las
aplicaciones de calidad, proteger a los consumidores de malwares y proteger los
servicios de Microsoft.
CARRERAS PROFESIONALES
CIBERTEC
17
CIBERTEC
CARRERAS PROFESIONALES
18
CARRERAS PROFESIONALES
CIBERTEC
19
LABORATORIO 1.1
Seleccione la
opcin New Project
para crear un nuevo
proyecto
Desde el IDE New Project, seleccione la plantilla (Template) Visual C#, el cual
listara un conjunto de proyectos
CIBERTEC
CARRERAS PROFESIONALES
20
Seleccione la plantilla
Windows Phone en
Visual C#
Asigne nombre al
proyecto
CARRERAS PROFESIONALES
CIBERTEC
21
3
4
Donde:
1. Es el contenedor XAML objeto, es del tipo PhoneApplicationPage, que a su vez es
parte de la librera o NameSpace Microsoft.Phone.Controls.
2. El NameSpace o librera Microsoft.Phone.Controls
es mapeado a la librera
CIBERTEC
CARRERAS PROFESIONALES
22
5. Esta cuadricula (TitleGrid) tiene dos objetos TextBlock que muestran el nombre de
la aplicacin y de la pgina. Tenga en cuenta que la TitleGrid se est asignando a
la primera fila con Grid.Row = "0". El objeto TextBlock slo muestra la cadena que
se asigna a su propiedad Text.
6. Aqu es donde se colocar el contenido de su aplicacin. El XAML predeterminado
que genera SilverLight para Windows Phone, es slo un punto de partida. Usted
puede modificarlo, actualizarlo o reemplazarlo por completo.
Arrastre los
controles dentro
de la Grilla
Declarativas de
los controles en
XAML
CARRERAS PROFESIONALES
CIBERTEC
23
Propiedad
Text:
Mensaje
Propiedad
Name:
txtMensaje
Propiedad
Content: Ok
Propiedad
Name:
btnHello
CIBERTEC
CARRERAS PROFESIONALES
24
Seleccione la pestaa
Events del control
btnHello
A continuacin, programe el evento Clic del botn de la consulta, tal como se muestra
CARRERAS PROFESIONALES
CIBERTEC
25
Antes de ejecutar,
seleccione el Target del
Projecto a tipo Emulator
Para ejecutar el emulador del proyecto, presione la tecla F5. Presione el botn OK, el
cual le dar la bienvenida.
CIBERTEC
CARRERAS PROFESIONALES
26
Diseando la Pgina
Cuando implementamos una aplicacin y deseamos brindar ciertas caractersticas al
Layout: color de fondo, color de letra, mrgenes, etc. Estas ediciones se realizan en
Microsoft Expression.
CARRERAS PROFESIONALES
CIBERTEC
27
Seleccione el
archivo
appPhone.sln
2. Seleccione la
opcin Brush:
Background
1. Seleccione desde
objetos: LayoutRoot
CIBERTEC
CARRERAS PROFESIONALES
28
2. Seleccione la
opcin Brush:
BorderBrush
1. Seleccione desde
objetos: txtMensaje
1. Seleccione la
opcin Brush:
BackGround
CARRERAS PROFESIONALES
CIBERTEC
29
CIBERTEC
CARRERAS PROFESIONALES
30
Cambio de orientacin
de la pantalla
CARRERAS PROFESIONALES
CIBERTEC
31
Resumen
Microsoft Windows Phone es un gran consumidor de telfono, porque tiene todas
las caractersticas a las que los usuarios se han acostumbrado con los
smartphones.
.NET proporciona es una base comn de biblioteca de clases que todos los
programadores .NET conocen, incluyendo soporte para multithreading, XML, LINQ,
colecciones,
eventos,
datos,
excepciones,
IO,
modelo
de
servicio,
CIBERTEC
CARRERAS PROFESIONALES
32
1.2
controles de
Controles SilverLight 3
Button
CheckBox
ContentControl
HyperlinkButton
Temas
Configurado para iniciar el navegador en el dispositivo.
CARRERAS PROFESIONALES
CIBERTEC
Image
33
ListBox
MediaElement
MultiScaleImage
Password
ProgressBar
Temas
RadioButton
ScrollViewer
Slider
TextBox
Soporte SIP
Soporte para Entrada
TextBlock
Temas
A. Control WebBrowser
Las aplicaciones Windows Phone estn alojados fuera del explorador en un proceso
de host llamado taskhost.exe. Este proceso de alojamiento es similar a la salida del
explorador modelo disponible en Silverlight 4. Tanto en Windows Phone y Silverlight 4,
cuando se encuentre fuera de navegador que puede albergar y interactuar con el
contenido HTML y Javascript con el control WebBrowser.
CIBERTEC
CARRERAS PROFESIONALES
34
B. PhoneApplicationFrame
Dentro de una aplicacin, la navegacin desde un Page a otro Page es implementada
por la clase PhoneApplicationFrame y la clase NavegationService.
No hay integracin con las aplicaciones Windows Phone que se encuentran fuera
del navegador.
CARRERAS PROFESIONALES
CIBERTEC
35
C. PhoneApplicationPage
PhoneApplicationPage tiene la funcionalidad de navegacin para ir junto con Marco,
pero tambin incluye tres otras caractersticas crticas para cualquier aplicacin
Windows Phone: Orientacin, De mens (a travs de la ApplicationBar) e integracin
de tareas (Selectores y Lanzadores).
Uso
NavigationContext
para
leer
un
QueryString
pasado
al
PhoneApplicationPage.
NextStep,
UriKind.Relative));
}
void GenericPortraitPage_Loaded(object sender, RoutedEventArgs e){
// Acceso a QueryString desde propiedad NavigationContext en Page
if (this.NavigationContext != null &&
this.NavigationContext.QueryString != null){
var step=this.NavigationContext.QueryString["step"] as string;
}
}
D. Orientation
Tambin desencadenado de manera similar como Navigation, va mtodo virtual,
puedes sobrescribirse:
CIBERTEC
CARRERAS PROFESIONALES
36
E. ApplicationBar
El ApplicationBar es una barra de men para la aplicacin. La meta para el
ApplicationBar es proporcionar un men o barra de herramientas que proporciona fcil
acceso a las tareas comunes en la aplicacin. Cada PhoneApplicationPage puede
tener su propia ApplicationBar, aunque se recomienda que no cambie demasiado las
opciones en cada pgina. Tambin puede ocultar o mostrar la barra de men. Un
ApplicationBar
puede
contener
un
botn
de
una
hilera
(instancias
de
F.
Los controles Date and Time Picker son utilizados para seleccionar fecha y horas del
telfono. Estos controles son optimizados para touch; se puede usar un simple touch o
roleando en cualquier campo de la pantalla.
CARRERAS PROFESIONALES
CIBERTEC
37
G. Choosers y Launchers
Choosers y Launchers son diferentes tipos de componentes. Son anlogamente los
cuadros de dilogos en Windows o SilverLight, Chooser y Launchers. Son utilizados
para comunicar dentro de una aplicacin SilverLight al Shell o a otras aplicaciones
Launchers son diferentes de los Choosers, porque no devuelven datos. Ellos ms bien
desencadenan la accin. Un ejemplo de un Launcher es la API utilizada para colocar
una llamada telefnica. En este caso, el desarrollador invoca el API y el usuario
vuelve, de nuevo, a la aplicacin de llamada una vez que la llamada ha terminado.
CameraCaptureTask
EmailAddressChooserTask
PhoneNumberChooserTask
PhotoChooserTask
SaveEmailAddressTask
SavePhoneNumberTask.
CIBERTEC
CARRERAS PROFESIONALES
38
LABORATORIO 2.1
Creacin de un Proyecto Windows Phone
Implementa una aplicacin Windows Phone para navegar por la Web
Seleccione la opcin
New Project para
crear un nuevo
proyecto
Desde el IDE New Project, seleccione la plantilla (Template) Visual C#, el cual
listara un conjunto de proyectos
Seleccione la
plantilla Windows
Phone en Visual C#
Asigne nombre al
proyecto
2. Diseo
CARRERAS PROFESIONALES
CIBERTEC
39
textBox, Name=txtDireccion
button, Name= Button1
3. Programacin
En este proceso, codificamos el proceso de la navegacin, el cual se realiza sin la
debida validacin, la idea es Cmo validamos el proceso?
CIBERTEC
CARRERAS PROFESIONALES
40
Ejecutar el proceso de
navegar, si no existe, ejecuta
la excepcin
CARRERAS PROFESIONALES
CIBERTEC
41
LABORATORIO 2.2
Control MediaElement,
name: mediaElement1
2. Programacin
En el evento Loaded del Page, definimos el origen del control MediaElement, tal como
se muestra:
CIBERTEC
CARRERAS PROFESIONALES
42
A continuacin, programa el botn Stop y Play para ejecutar el control Media Element,
tal como se muestra.
Programa el evento
ValueChanged del control
slider1 para aumentar o
disminuir el volumen del
mediaElement1
CARRERAS PROFESIONALES
CIBERTEC
43
LABORATORIO 2.3
Seleccione el
tipo de Page
2. Diseo
A continuacin, vamos a disear el Page que permitir crear la calculadora.
Control Image
CIBERTEC
CARRERAS PROFESIONALES
44
CARRERAS PROFESIONALES
CIBERTEC
45
3. Programacin
CIBERTEC
CARRERAS PROFESIONALES
46
Defina la funcin Calcula, donde definimos tres parmetros, los cuales realizan el
clculo aritmtico segn el signo.
CARRERAS PROFESIONALES
CIBERTEC
47
Para enlazar los eventos a cada button, seleccione el control Button, tal como se
muestra. En la ventana de propiedades, seleccione la pestaa Event; en el evento
Click seleccione el evento que va a desencadenar: para el button 1, el evento Click a
seleccionar seria numero_Click, tal como se muestra
El mismo proceso para los button signo, en este caso debe seleccionar en el evento
Click: signo_Click, tal como se muestra
CIBERTEC
CARRERAS PROFESIONALES
48
En el button = programe el
evento respectivo, hacer doble
click al evento Click.
CARRERAS PROFESIONALES
CIBERTEC
49
LABORATORIO 2.4
Creacin de una Barra de Aplicaciones
Implemente una aplicacin Windows Phone para crear una barra de aplicaciones en
nuestra Pgina Principal.
Seleccione el tipo
de Page
2. Diseo
Antes de iniciar el proceso, agregue algunos archivos
de imgenes de extensin .png: calculador.png,
internet.png, reproductor.png.
CIBERTEC
CARRERAS PROFESIONALES
50
3. Programacin
Defina el nameSpace Microsoft.Phone.Shell, asi como el objeto ApplicationBar
llamado Bar, tal como se muestra.
NameSpace
Microsoft.Phone.Shell
CARRERAS PROFESIONALES
CIBERTEC
51
CIBERTEC
CARRERAS PROFESIONALES
52
CARRERAS PROFESIONALES
CIBERTEC
53
Resumen
Windows Phone incluye la mayora de los controles bsicos de Silverlight 3. La
compatibilidad con DeskTop es muy alto, pero la mayora de los controles de
Windows Phone tienen pequeas optimizaciones o retoques.
Windows Phone es capaz de Multitouch. Algunos controles de Windows Phone
incluyen soporte
integracin
de
tareas
(Selectores
Lanzadores).
Por
navegacin,
CIBERTEC
CARRERAS PROFESIONALES
54
CARRERAS PROFESIONALES
CIBERTEC
1.3
55
Para establecer el vnculo entre pginas a travs del control HyperlinkButton, se puede
hacer usando slo XAML:
<HyperlinkButton Content="Pasta"
NavigateUri="/Pasta.xaml"
Height="30"
Name="hyperlinkButton1"
Width="200"
HorizontalAlignment="Left"
HorizontalContentAlignment="Left"/>
<HyperlinkButton Content="Queso"
NavigateUri="/Cheese.xaml"
Height="30"
Name="hyperlinkButton2"
Width="200"
HorizontalAlignment="Left"
HorizontalContentAlignment="Left" />
CIBERTEC
CARRERAS PROFESIONALES
56
<HyperlinkButton Content="Salsa"
NavigateUri="/Sauce.xaml"
Height="30"
Name="hyperlinkButton3"
Width="200"
HorizontalAlignment="Left"
HorizontalContentAlignment="Left" />
Al ejecutar el proyecto, debe ser posible hacer clic en cualquiera de estos botones de
vnculos e ir a la pgina. Al usar el botn de retroceso () podrn ir a la pantalla
previa. Si se retrocede lo suficiente, se sale de la aplicacin al pasar ms all de su
primera pantalla.
En XAML
<Button Content="Pasta"
Height="72"
Name="BotnPasta"
Width="160"
Click="Botn_Click"/>
<Button Content="Queso"
Height="72"
Name="BotnQueso"
Width="160"
Click="Botn_Click" />
<Button Content="Salsa"
Height="72"
Name="BotnSalsa"
Width="160"
Click="Botn_Click" />
CARRERAS PROFESIONALES
CIBERTEC
57
En C#
private void Botn_Click(object sender, RoutedEventArgs e){
Button botnPulsado = sender as Button;
switch (botnPulsado.Name) {
case "BotnPasta":
NavigationService.Navigate(new Uri("/Pasta.xaml",
UriKind.Relative));
break;
case "BotnQueso":
NavigationService.Navigate(new
Uri("/Cheese.xaml",UriKind.Relative));
break;
case "BotnSalsa":
NavigationService.Navigate(new Uri("/Sauce.xaml",
UriKind.Relative));
break;
}
}
Como se puede ver, todas las acciones del usuario son registradas, permitindole
retroceder por el camino tomado con tan slo usar el NavigationService
No
obstante,
no
puede
crear
su
propia
instancia
de
NavigationService.
CIBERTEC
CARRERAS PROFESIONALES
58
NavigationService.Navigate(Object)
NavigationService.Navigate(Object, Object)
Navigating
Navigated
NavigationProgress
NavigationFailed
NavigationStopped
LoadCompleted
FragmentNavigation.
No todos los eventos se provocan cada vez que se produce una navegacin; el tipo de
navegacin que se produce (contenido o fragmento del contenido) determina el
conjunto de eventos que se provocan y el modo en el que se completa la navegacin
(cancelada, detenida o con errores).
CARRERAS PROFESIONALES
CIBERTEC
59
Mtodo
Descripcin
GoBack
GoForward
Navigate(Uri)
Navigate(Uri,
Object, Boolean)
RemoveBackEntry
Mtodo
Descripcin
CanGoBack
CanGoForward
CurrentSource
CIBERTEC
CARRERAS PROFESIONALES
60
contenido actual.
Source
Para pasar los parmetros y valores de una pgina a otra que necesita iniciar debe
aadir el signo de interrogacin (?) y luego especificar el parmetro junto con su valor.
Utilice Uri.EscapeUriString para evitar excepciones formato durante la
navegacin.
NavigationService.Navigate(
new Uri("/DestinationPage.xaml?parameter1=v1", UriKind.Relative) );
// O tambin
NavigationService.Navigate(
new Uri(string.Format("/DestinationPage.xaml?parameter1={0}",
Uri.EscapeUriString(stringParameterValue), UriKind.Relative)));
NavigationService.Navigate(
new Uri("/DestinPage.xaml?param1=v1¶m2=v2",UriKind.Relative));
CARRERAS PROFESIONALES
CIBERTEC
61
Despus de pasar los valores a la pgina de destino, se puede obtener dichos valores
utilizando NavigationContext y la cadena de consulta. Por lo general, puedo
implementar este proceso dentro del mtodo OnNavigatedTo. Se puede obtener slo
los objetos de cadena de consulta, lo que significa que si ha pasado un nmero entero
como valor, tiene que convertir el valor, la cual se enva como cadena de caracteres, a
tipo entero.
En este caso, tan pronto como nos aseguramos que recuperamos los datos
necesarios, le asignamos los valores recuperados a la propiedad Text del control
TexBox. Por ltimo, activar la clase base OnNavigatedTo mtodo para asegurar el
funcionamiento normal de la clase base.
CIBERTEC
CARRERAS PROFESIONALES
62
LABORATORIO 3.1
Seleccione el tipo de
Page
CARRERAS PROFESIONALES
CIBERTEC
63
2. Diseo
CIBERTEC
CARRERAS PROFESIONALES
64
3. Programacin
Defina el nameSpace Microsoft.Phone.Shell, as como el objeto ApplicationBar
llamado Bar, tal como se muestra.
NameSpace
Microsoft.Phone.Shell
El mtodo botn_Click,
ejecuta el proceso de los
botones de la barra de
aplicaciones
CARRERAS PROFESIONALES
CIBERTEC
65
CIBERTEC
CARRERAS PROFESIONALES
66
LABORATORIO 3.2
Seleccione la opcin
New Project para
crear un nuevo
proyecto
Desde el IDE New Project, seleccione la plantilla (Template) Visual C#, el cual
listara un conjunto de proyectos
CARRERAS PROFESIONALES
CIBERTEC
67
Seleccione la plantilla
Windows Phone en
Visual C#
Asigne nombre al
proyecto
Diseo.
Disea la pgina MainPage para dar la bienvenida al usuario, dibuje la pgina tal como
se muestra:
Control HyperLinkButton,
propiedad Content: Continuar
CIBERTEC
CARRERAS PROFESIONALES
68
Programacin
Selecciona el evento Click del control HyperlinkButton, tal como se detalla:
Seleccione el evento
Click, hacer doble click
sobre el evento
CARRERAS PROFESIONALES
CIBERTEC
69
En el constructor definir
la orientacin de la
pgina.
Definir el servicio de
navegacin, hacia la
pagina Acceso.xaml,
definiendo la ruta
Relativa
Diseo de Acceso.xaml
A continuacin, disee la pgina Acceso.xaml que permita el ingreso de un usuario a
la aplicacin. Dibuje la pgina tal como se muestra:
Cambiar la propiedad
a PortraitorLandscape
CIBERTEC
CARRERAS PROFESIONALES
70
CARRERAS PROFESIONALES
CIBERTEC
71
Direccionando hacia la
pgina Seleccin.xaml
enviando parmetros
nombre y empresa
Direccionando hacia
la pgina anterior
Diseo de Seleccion.xaml
A continuacin, disee la pgina Seleccion.xaml que permita el ingreso de un usuario
a la aplicacin. Dibuje la pgina tal como se muestra:
CIBERTEC
CARRERAS PROFESIONALES
72
Programacin
Al cargar la pgina, recuperamos los valores del QueryString, tal como se muestra, y
visualizamos los datos.
CARRERAS PROFESIONALES
CIBERTEC
73
Resumen
Hay varias formas de navegar entre pginas, pero vamos a enfocarnos en una a la
que se va a llamar Navegacin Simple de Web. Navegaremos entre pginas de
igual manera como si fuesen pginas de HTML.
Si queremos ir de la primera a la segunda, podemos hacer uso de un control
HyperlinkButton. Este permite realizar la navegacin entre dos pginas. Para
establecer el vnculo entre pginas a travs del control HyperlinkButton, se puede
hacer usando slo XAML
Se puede navegar entre pginas utilizando cdigo en vez de usar slo XAML,
pueden usar cualquier elemento XAML que se prefiera. En este ejemplo, vamos a
crear tres botones y cada uno apunta al mismo controlador de eventos. En el
cdigo C# siguiente, vern que se averigua cul botn ha sido pulsado y luego se
va a la pgina apropiada.
El servicio de navegacin que se devuelve de la propiedad NavigationService es la
instancia de la clase NavigationService administrada por el primer navegador en el
rbol visual. Si no se encuentra ninguna, se devuelve null, lo que indica que el host
de una pgina no admite la navegacin
De forma predeterminada, NavigationService no almacena ninguna instancia de un
objeto de contenido en el historial de navegacin. En su lugar, NavigationService
crea una nueva instancia del objeto de contenido cada vez que se navega a l
mediante el historial de navegacin. Este comportamiento est diseado para
evitar un consumo de memoria excesivo cuando se navegue a muchas partes del
contenido y a grandes partes del mismo.
Para pasar datos entre dos pginas, debemos especificar los parmetros y sus
valores en la URI (QueryString) es probablemente la forma ms fcil de pasar
datos de una pgina a otra durante la navegacin.
Para ello aadir ("?") signo de interrogacin para el final y luego especifique el
parmetro par = valor (Cdigo de verificacin abajo). Utilice Uri.EscapeUriString
para evitar excepciones formato durante la navegacin.
Despus de pasar los valores a la pgina de destino que se puede obtener
utilizando NavigationContext y la cadena de consulta. Por lo general, se puede
implementar este proceso dentro del mtodo OnNavigatedTo
CIBERTEC
CARRERAS PROFESIONALES
74
Clase NavigateService
http://msdn.microsoft.com/eses/library/system.windows.controls.page.navigationservice.aspx
CARRERAS PROFESIONALES
CIBERTEC
75
UNIDAD DE
APRENDIZAJE
TEMARIO
2.1 Tema 3
2.1.1.
2.1.2.
2.2 Tema 4
2.2.1.
2.2.2.
2.2.3.
2.2 Tema 5
2.3.1.
2.3.2.
2.3.3.
:
:
:
:
:
:
:
:
:
:
:
ACTIVIDADES PROPUESTAS
Los alumnos implementarn una aplicacin Mobile para el manejo archivos en el
equipo local
CIBERTEC
CARRERAS PROFESIONALES
76
CARRERAS PROFESIONALES
CIBERTEC
2.1
77
Existen diferentes opciones para almacenar datos. Bsicamente son dos: Isolated
Storage o almacenamiento en local y almacenamiento en Base de Datos en la nube.
En este captulo, nos centraremos en el almacenamiento con Isolated Storage.
CIBERTEC
CARRERAS PROFESIONALES
78
Con todas esas consideraciones iniciales, vamos a explicar cmo funciona, cmo se
almacena y cmo se lee este espacio.
CARRERAS PROFESIONALES
CIBERTEC
79
valor,
TKey,
TValue),
llamado Application
Settings
el cual
Por ejemplo, vamos a crear una clase con dos mtodos para leer y grabar la
configuracin de nuestra aplicacin.
}
}
De esta manera tan sencilla estamos grabando y leyendo cadenas de texto en nuestro
almacn local. Obviamente, esto es ejemplo simple para que se entienda el
funcionamiento. Para realizar algo ms eficaz deberamos de poder guardar cualquier
cosa como un valor dentro de nuestro diccionario, para ello modificamos la clase para
dejarla de la siguiente forma:
CIBERTEC
CARRERAS PROFESIONALES
80
IDictionary.
Esto
puede
resultar
un
tanto
extrao
ya
que
la
clase
almacenamiento
de
nuestro
WP7
es
\Aplications\Data\(ID
CARRERAS PROFESIONALES
CIBERTEC
81
Clase
Descripcin
IsolatedStorageException
IsolatedStorageFile
IsolatedStorageFileStream
IsolatedStorageSettings
almacena
los
pares
clave-valor
en
almacenamiento aislado.
A.
Mtodo
Descripcin
CopyFile(String, String)
CreateDirectory
CIBERTEC
CARRERAS PROFESIONALES
82
CreateFile
DeleteDirectory
Elimina
un
directorio
del
mbito
de
almacenamiento aislado.
DeleteFile
DirectoryExists
FileExists
GetDirectoryNames(String)
Enumera
los
directorios
de
un
mbito
de
Enumera
los
archivos
de
un
mbito
de
MoveDirectory
MoveFile
Remove
Utilice esta clase para leer, escribir y crear archivos en el almacenamiento aislado.
Como esta clase extiende FileStream, se puede utilizar una instancia de
IsolatedStorageFileStream en la mayora de las situaciones en que, de otro modo, se
utilizara FileStream, como, por ejemplo, para construir StreamReader o StreamWriter.
CARRERAS PROFESIONALES
CIBERTEC
B.
83
Mtodo
Descripcin
BeginRead
Comienza
una
lectura
asincrnica.
FileStream.BeginRead(Byte[],
Int32,
Int32,
(Invalida
AsyncCallback,
Object)).
BeginWrite
Comienza
una
escritura
FileStream.BeginWrite(Byte[],
asincrnica.
Int32,
Int32,
(Invalida
AsyncCallback,
Object)).
Close
CopyTo(Stream,
Int32)
Finalize
Flush()
Read
Copia
en
una
matriz
bytes
del
actual
objeto
Establece
la
actual
posicin
de
este
objeto
el
parmetro
value
especificado.
(Invalida
FileStream.SetLength(Int64)).
Write
Escribe
un
bloque
de
bytes
en
el
objeto
CIBERTEC
CARRERAS PROFESIONALES
84
CARRERAS PROFESIONALES
CIBERTEC
85
LABORATORIO 3.1
Manejo de Carpetas
Implementa una aplicacin para manejar carpetas en el almacenamiento local.
Seleccione el tipo de
Page
Control TextBox,
name: txtCarpeta
Control Button,
name: btnAdd
Control ListBox,
name: listBox1
CIBERTEC
CARRERAS PROFESIONALES
86
3. Programacin
Agregue las libreras para trabajar con almacenamiento local.
Define el rea de
almacenamiento de tipo User
para Aplicacin
CARRERAS PROFESIONALES
CIBERTEC
87
Programa el evento Click del botn Add, el cual permita agregar un directorio al rea
de almacenamiento local.
CIBERTEC
CARRERAS PROFESIONALES
88
LABORATORIO 3.2
2. Programacin
Agregue las libreras para trabajar con almacenamiento local
CARRERAS PROFESIONALES
CIBERTEC
89
Define el rea de
almacenamiento de tipo User
para Aplicacin
CIBERTEC
CARRERAS PROFESIONALES
90
Programe el evento Click del botn Save, para guardar el archivo de texto en un
directorio seleccionado desde el control ListBox1
Si no selecciono el directorio
Definir el archivo de
almacenamiento local
Definir el escritor de f y escriba
su contenido
CARRERAS PROFESIONALES
CIBERTEC
91
LABORATORIO 3.3
Control ListBox,
name: listBox1
Control ListBox,
name: listBox2
Control TextBox,
name: txtContenido
2. Programacin
Agregue las libreras para trabajar con almacenamiento local
CIBERTEC
CARRERAS PROFESIONALES
92
Define el rea de
almacenamiento de tipo User
para Aplicacin
CARRERAS PROFESIONALES
CIBERTEC
93
En el evento
SelectionChanged del
listbox1, al seleccionar una
carpeta, listar sus archivos
En el evento
SelectionChanged del
listbox2, al seleccionar el
archivo, visualizar el
contenido utilizando el
StreamReader
CIBERTEC
CARRERAS PROFESIONALES
94
Resumen
El almacenamiento de datos con Isolated Storage o almacenamiento local es una
forma de guardar los datos en archivos locales que lleva en uso desde Silverlight 2.
Solo nuestra aplicacin tiene acceso a sus archivos, por eso se llama
almacenamiento aislado.
La clase IsolatedStorageSettings se utiliza principalmente cuando guardamos los
datos de la configuracin de nuestra aplicacin, el nombre de la propia clase nos
da alguna que otra pista.
El espacio de nombres System.IO.IsolatedStorage contiene tipos para crear y
utilizar un sistema de archivos virtual. El almacenamiento aislado proporciona un
almacenamiento seguro en el cliente para las aplicaciones de confianza parcial. En
Silverlight, todas las operaciones de E/S estn restringidas al almacenamiento
aislado y no usan el sistema de archivos del sistema operativo.
Esta clase abstrae el sistema de archivos virtual para el almacenamiento aislado.
Un objeto IsolatedStorageFile se corresponde con un mbito de almacenamiento
aislado especfico, donde se encuentran los archivos representados por los objetos
IsolatedStorageFileStream. Las aplicaciones pueden utilizar el almacenamiento
aislado para guardar datos en su propia parte aislada del sistema de archivos, sin
tener que especificar una ruta de acceso concreta dentro del sistema de archivos.
Utilice esta clase para leer, escribir y crear archivos en el almacenamiento aislado.
Como esta clase extiende FileStream, se puede utilizar una instancia de
IsolatedStorageFileStream en la mayora de las situaciones en que, de otro modo,
se utilizara FileStream, como, por ejemplo, para construir StreamReader o
StreamWriter.
La forma de operar con el archivo es muy similar, obtenemos el espacio de
almacenamiento de la aplicacin mediante GetUserStoreForApplication. Luego
tenemos que usar una instancia de IsolatedStorageFileStream para poder
manipular el archivo. Hay que indicar el nombre del archivo, el lugar donde est
almacenado y como manipulamos el archivo, tenemos varias opciones para esto,
Create, Open, Append, Truncate, etc
Si desea saber ms acerca de estos temas, puede consultar las siguientes
pginas.
Almacenamiento local
CARRERAS PROFESIONALES
CIBERTEC
95
http://www.lavilladigital.com/2011/03/22/almacenamiento-local-de-datos-enwindows-phone/
Manejo de carpetas y archivos locales
http://geeks.ms/blogs/creneses/archive/2010/10/07/wp7-almacenamiento-dearchivos-en-local.aspx
Almacenamiento local
http://tecnologia.rafaserna.es/2011/01/22/almacenamiento-en-windows-phone-7isolated-storage/
CIBERTEC
CARRERAS PROFESIONALES
96
2.2
XML, con todas las tecnologas relacionadas, representa una manera distinta de hacer
las cosas, ms avanzada, cuya principal novedad consiste en permitir compartir los
datos con los que se trabaja a todos los niveles, por todas las aplicaciones y soportes.
As pues, el XML juega un papel importantsimo en este mundo actual, que tiende a la
globalizacin y la compatibilidad entre los sistemas, ya que es la tecnologa que
permitir compartir la informacin de una manera segura, fiable, fcil. Adems, XML
permite al programador dedicar sus esfuerzos a tareas importantes, cuando trabaja
con los datos, ya que algunas tareas tediosas como la validacin de estos o el
recorrido de las estructuras corren a cargo del lenguaje y est especificado por el
estndar, de modo que el programador no tiene que preocuparse por ello.
En XML, se empieza con una etiqueta y termina con otra etiqueta. En el inicio de la
etiqueta, escribir el nombre del elemento XML que quieres colocar dentro de los
soportes <>; en el final de la etiqueta, colocar el mismo nombre del elemento de inicio,
pero colocando un / despus del primer soporte de la izquierda.
Ntese, que hay una etiqueta de apertura y una etiqueta de cierre que tiene el valor
de Levels. Esta etiqueta de apertura y etiqueta de cierre es para todos los niveles. A
continuacin hay un nivel definido, con elementos que son el nivel Number y el nivel
CARRERAS PROFESIONALES
CIBERTEC
97
Enemy. Enemy tiene un valor de "Enemy1". Ahora, este valor podra ser lo que
quieras: tipo int, string, un enum, o incluso un objeto personalizado. Pero, cuando se
carga el archivo, todos los elementos son cadenas.
El campo Number es llamado elemento. Es un elemento de ese nivel, ya que se
encuentra entre las etiquetas de apertura y del cierre del nivel. Los elementos tambin
pueden tener atributos, que vienen despus de que el nombre del elemento, pero
antes de que el soporte de la flecha. Este es un ejemplo de un atributo:
<Enemy>1</Enemy>
Para suplir esto la directriz de Microsoft es clara: mueve tus datos a la nube y que la
aplicacin acceda a ellos mediante su conexin a internet. Aunque esto es totalmente
vlido podemos encontrarnos ocasiones en que deseemos almacenar cierta
informacin en el terminal, a modo de cache de datos o guardar preferencias de
usuario sobre archivos XML
System.XML
System.XML.LINQ
System.XML.Serialization
CIBERTEC
CARRERAS PROFESIONALES
98
Contiene las clases para LINQ to XML. LINQ to XML es una interfaz de programacin
XML en memoria que permite modificar con eficacia y facilidad documentos XML.
Usar una combinacin de estas caractersticas para transformar las formas de los
rboles XML.
A.
Clases
Nombre
Descripcin
XDocument
XElement
XNode
XObject
XAttribute
Una de las clases que permite la carga del archivo XML es XDocument, donde permite
subir a memoria los datos del archivo.
CARRERAS PROFESIONALES
CIBERTEC
99
En una consulta LINQ, el primer paso es especificar el origen de datos. En C#, como
en la mayora de los lenguajes de programacin, se debe declarar una variable antes
de poder utilizarla. En una consulta LINQ, la clusula FROM aparece en primer lugar
para introducir el origen de datos (customers) y la variable de rango (cust).
Puede utilizar los operadores lgicos AND y OR de C#, con los que ya estar
familiarizado, para aplicar las expresiones de filtro que sean necesarias en la clusula
where:
A menudo es necesario ordenar los datos devueltos. La clusula ORDERBY har que
los elementos de la secuencia devuelta se ordenen segn el comparador
predeterminado del tipo que se va a ordenar. Por ejemplo, la consulta siguiente se
puede extender para ordenar los resultados segn la propiedad Name. Dado que
Name es una cadena, el comparador predeterminado realiza una ordenacin
alfabtica de la A hasta la Z.
CIBERTEC
CARRERAS PROFESIONALES
100
La clusula GROUP permite agrupar los resultados segn la clave que se especifique.
Por ejemplo, podra especificar que los resultados se agrupen por City para que todos
los clientes de London o Pars estn en grupos individuales. En este caso, la clave es
cust.City.
Al finalizar una consulta con una clusula GROUP, los resultados adoptan la forma de
una lista de listas. Cada elemento de la lista es un objeto que tiene un miembro Key y
una lista de elementos agrupados bajo esa clave.
Al procesar una iteracin en una consulta que genera una secuencia de grupos, debe
utilizar un bucle FOREACH anidado. El bucle exterior recorre en iteracin cada grupo y
el bucle interior recorre en iteracin los miembros de cada grupo.
Si debe hacer referencia a los resultados de una operacin de grupo, puede utilizar la
palabra clave INTO para crear un identificador con el que se puedan realizar ms
consultas. La consulta siguiente devuelve slo los grupos que contienen ms de dos
clientes:
En este ejemplo, vamos a cargar los datos del archivo XML llamado People. Utilizando
sintaxis LINQ vamos a leer el contenido del archivo xml.
CARRERAS PROFESIONALES
CIBERTEC
101
Para deserializar un objeto de un documento XML, hay que crear un objeto adecuado
con el fin de leer el documento o la secuencia (de nuevo, Stream, TextWriter o
XmlWriter). Invoque al mtodo Deserialize mientras se convierte el objeto
resultante en el tipo del objeto original (serializado).
Para controlar la serializacin, el espacio de nombres System.Xml.Serialization
contiene varias clases Attribute que se pueden aplicar a los miembros de una
clase. Por ejemplo, si una clase contiene un miembro que se serializar como un
elemento XML, se puede aplicar el atributo XmlElementAttribute al miembro. Al
aplicar el atributo, se puede especificar informacin detallada como el nombre de
elemento XML real mediante la propiedad ElementName. Para obtener una lista
completa de todos los atributos, vea la informacin general de la clase
XmlSerializer.
CIBERTEC
CARRERAS PROFESIONALES
102
propiedad
ItemsSource
de
cualquier
tipo
que
implemente
CARRERAS PROFESIONALES
CIBERTEC
103
LABORATORIO 4.1
Seleccione la opcin
New Project para crear
un nuevo proyecto
Desde el IDE New Project, seleccione la plantilla (Template) Visual C#, el cual
listara un conjunto de proyectos
Seleccione la plantilla
Windows Phone en
Visual C#
Asigne nombre al
proyecto
CIBERTEC
CARRERAS PROFESIONALES
104
2. Archivo XML.
Para realizar este proceso, crea un archivo XML
llamados personas.xml, definiendo la estructura
de la raz y sus elementos, tal como se muestra.
3. Diseo.
Disea la pgina tal como se muestra para realizar el
proceso de la consulta
Defina el control
StackPanel, el
ListBox, y el
Template de
datos tal como
se muestra
CARRERAS PROFESIONALES
CIBERTEC
105
5. Programacin
Defina la clase persona, definiendo sus atributos y propiedades
CIBERTEC
CARRERAS PROFESIONALES
106
Programa el evento Loaded del Page, donde ejecutara la consulta LINQ, visualizando
los datos en el control ListBox1.
CARRERAS PROFESIONALES
CIBERTEC
107
LABORATORIO 4.2
1. Diseo.
Disea la pgina tal como se muestra para realizar el proceso de la consulta
Defina el control StackPanel y el Template del ListBox en el archivo XAML, tal como se
muestra.
Defina el
control
StackPanel, el
ListBox, y el
Template de
datos tal como
se muestra
CIBERTEC
CARRERAS PROFESIONALES
108
3. Programacin
Defina la clase persona, definiendo sus atributos y propiedades
CARRERAS PROFESIONALES
CIBERTEC
109
Programe el evento Click del botn Consulta, donde al ingresar las iniciales del
nombre de una persona, visualizamos los registros que coincidan con las iniciales.
CIBERTEC
CARRERAS PROFESIONALES
110
Presione la tecla F5 para ejecutar la aplicacin, ingrese las iniciales del nombre, al
presionar el botn Consulta, visualizamos los registros que coincidan con los datos
ingresados
CARRERAS PROFESIONALES
CIBERTEC
111
LABORATORIO 4.3
1. Archivo XML.
Para realizar este proceso, crea un
archivo
XML
llamados
usuarios.xml,
2. Diseo.
Disea la pgina de acceso al sistema, tal como se
muestra. Disea el control ListBox1 en la pgina
XAML, tal como se muestra en la grafica de la
parte inferior.
CIBERTEC
CARRERAS PROFESIONALES
112
Defina el listBox1,
en la pgina
XAML
4. Programacin
Defina la clase Usuarios.cs, definiendo
sus atributos y propiedades
CARRERAS PROFESIONALES
CIBERTEC
113
Programe el evento Click del botn Consulta, donde ingrese el login y la clave del
usuario, al presionar el botn verifica los datos ingresados, visualizando el nombre del
usuario, si existe.
CIBERTEC
CARRERAS PROFESIONALES
114
Presione la tela F5, para ejecutar la aplicacin, ingresa los datos, para verificar
presione el botn Aceptar.
CARRERAS PROFESIONALES
CIBERTEC
115
LABORATORIO 4.4
1. Diseo.
Disea la pgina para el registro de archivos de personas tal como se muestra. Disea
el control ListBox1 en la pgina XAML, tal como se muestra en la grafica de la parte
inferior.
Disea el
Template de
datos, tal como
se muestra
CIBERTEC
CARRERAS PROFESIONALES
116
3. Programacin
Defina la clase Usuarios.cs, definiendo sus atributos y propiedades.
CARRERAS PROFESIONALES
CIBERTEC
117
Declara a nivel Class Page, el objeto Usuarios que es una lista de Persona de
estructura XMLArray.
CIBERTEC
CARRERAS PROFESIONALES
118
Para ejecutar el programa presione la tecla F5, para realizar las operaciones.
CARRERAS PROFESIONALES
CIBERTEC
119
Resumen
XML es una tecnologa en realidad muy sencilla que tiene a su alrededor otras
tecnologas que la complementan y la hacen mucho ms grande y con unas
posibilidades enormes y bsicas para la sociedad de la informacin.
En XML, se empieza con una etiqueta y termina con otra etiqueta. En el inicio de
la etiqueta, escribir el nombre del elemento XML que quieres colocar dentro de los
soportes <>; en el final de la etiqueta, colocar el mismo nombre del elemento de
inicio, pero colocando un / despus del primer soporte de la izquierda.
El proceso para el manejo de un archivo XML requiere de un conjunto de libreras
o nameSpace para la consulta y actualizacin de sus registros:
System.XML
System.XML.LINQ
System.XML.Serialization
System.XML.LINQ contiene las clases para LINQ to XML. LINQ to XML es una
interfaz de programacin XML en memoria que permite modificar con eficacia y
facilidad documentos XML
LINQ to XML proporciona una interfaz de programacin XML en memoria que
aprovecha las caractersticas de .NET Language-Integrated Query (LINQ)
Framework. LINQ to XML utiliza las caractersticas ms recientes del lenguaje
.NET Framework y es comparable a una actualizada y rediseada interfaz de
programacin XML para el Modelo de objetos de documento (DOM).
El espacio de nombres System.Xml.Serialization contiene clases que se utilizan
para serializar objetos en secuencias o documentos con formato XML.
La clase central en el espacio de nombres es la clase XmlSerializer. Tras crear
XmlSerializer, cree una instancia del objeto que se va a serializar. Tambin hay
que crear un objeto para escribir el archivo en un documento o una secuencia,
como Stream, TextWriter o XmlWriter. A continuacin, hay que llamar al mtodo
Serialize para convertir el objeto en un documento XML.
Para deserializar un objeto de un documento XML, hay que crear un objeto
adecuado con el fin de leer el documento o la secuencia (de nuevo, Stream,
TextWriter o XmlWriter). Invoque al mtodo Deserialize mientras se convierte el
objeto resultante en el tipo del objeto original (serializado).
El control ListBox es una lista desplegable vertical de elementos el cual se
visualizan los datos a travs de la coleccin Items. El ItemsControl es simplemente
CIBERTEC
CARRERAS PROFESIONALES
120
un objeto que puede contener mltiples tems, tales como strings, objects u otros
elementos define un Item del control ListBox de forma personalizada.
Si desea saber ms acerca de estos temas, puede consultar las siguientes
pginas.
Linq
http://msdn.microsoft.com/es-es/library/bb397927.aspx
Linq to XML
http://msdn.microsoft.com/en-us/library/bb299195(v=VS.95).aspx
ItemsControl
http://msdn.microsoft.com/enus/library/system.windows.controls.itemscontrol.aspx
CARRERAS PROFESIONALES
CIBERTEC
2.3
121
Fue creado con el fin de permitir una programacin rpida de sistemas distribuidos y el
desarrollo de aplicaciones basadas en arquitecturas orientadas a servicios (tambin
conocido como SOA), con una API simple; y que puede ejecutarse en una mquina
local, una LAN, o sobre la Internet en una forma segura.
el
corazn
de
Windows
variedad
de
estilos
para
el
siguiente
imagen
ilustra
la
CIBERTEC
CARRERAS PROFESIONALES
122
2.3.1.1 Contratos
Los contratos WCF contienen informacin relativa a lo que un servicio ofrece al cliente
y el tipo de informacin que va a poner a disposicin. Existen tres tipos de contratos:
de datos, de mensaje y de servicio.
A. Datos
Un contrato de datos estipula de manera explcita los datos que se intercambiarn con
el servicio. El servicio y el cliente no necesitan llegar a un acuerdo sobre los tipos, pero
si necesitan llegar a un acuerdo sobre los datos del contrato. Esto incluye los
parmetros y el tipo de retorno.
B. Mensajes
Un contrato de datos estipula de manera explcita los datos que se intercambiarn con
el servicio. El servicio y el cliente no necesitan llegar a un acuerdo sobre los tipos, pero
si necesitan llegar a un acuerdo sobre los datos del contrato. Esto incluye los
parmetros y el tipo de retorno.
C. Servicio
Un contrato de datos estipula de manera explcita los datos que se intercambiarn con
el servicio. El servicio y el cliente no necesitan llegar a un acuerdo sobre los tipos, pero
si necesitan llegar a un acuerdo sobre los datos del contrato. Esto incluye los
parmetros y el tipo de retorno.
Los contratos son definidos por el CLR por medio de clases o interfaces. stas, al ser
utilizadas en los servicios, son convertidas a un formato comn para que el servicio
pueda ser usado por distintas plataformas con total compatibilidad.
El Service Contract es convertido en un WSDL que obtiene la descripcin de las
operaciones ofrecidas por el servicio (segn lo definido en el Service Contract).
CARRERAS PROFESIONALES
CIBERTEC
123
D. Policy y Binding
Los contratos de poltica y enlace (Policy y Binding) especifican informacin importante
como la seguridad, el protocolo y otra informacin, de manera que esto se verifica
antes de que empiece con la comunicacin.
La tabla muestra los diferentes comportamientos que son gestionados por la capa del
servicio Runtime.
2.3.1.3 Mensajes
CIBERTEC
CARRERAS PROFESIONALES
124
La siguiente tabla muestra los canales y componentes que forman parte de la capa de
mensajera:
Componentes
Caractersticas
Canal de Seguridad
Implementa
la
especificacin
de
la
seguridad,
Fiable
mensajera
Codificadores
Canal HTTP
Canal TCP
Canal
de
flujo
transacciones
Canalizaciones
de Rige
los
patrones
de
los
mensajes
guiados
por
transacciones
con Permite comunicar procesos
nombre
Canal MSMQ
CARRERAS PROFESIONALES
CIBERTEC
125
Opciones
Caractersticas
Servicio
Activacin
Windows
activacin de Windows
.EXE
Servicio
Windows
Windows
COM+
CIBERTEC
CARRERAS PROFESIONALES
126
El transporte es otra de sus cualidades fuertes, ya que ste se define con un protocolo
neutral, de transporte neutral y formato neutral. Esto quiere decir que los servicios
pueden utilizar tanto HTTP como TCP u otro mecanismo de transporte. Los
desarrolladores tienen la posibilidad de agregar nuevos proveedores de transporte, y
esto es indiferente al servicio.Windows Communication Foundation separa el cdigo
del transporte, y de esta manera soporta distintos mtodos de comunicacin, sin
representar esto una carga de trabajo extra para el desarrollador.
CARRERAS PROFESIONALES
CIBERTEC
127
Dada la extensin y potencia de WCF a veces puede ser un poco complicado el hacer
que todo funcione correctamente, con esto en mente creamos este artculo para
guiaros por los pasos necesarios para llevar a buen trmino el uso de WCF con
Windows Phone 7.
A la hora de crear servicios WCF para ser consumidos desde Windows Phone 7 no
debemos tener ninguna consideracin especial en cuenta, bastar con crear un
servicio WCF standard, desde el men Archivo>Nuevo>Proyecto (File>New>Project)
en Visual Studio 2010 y en la pantalla de nuevo proyecto, seleccionar WCF de la lista
de plantillas y WCF Service Application de los proyectos WCF disponibles.
Selecciona un Servicio
de Aplicaciones de WCF
CIBERTEC
CARRERAS PROFESIONALES
128
Una caracterstica de los binding HTTP que tenemos disponible en WCF para
Windows Phone 7 es la seccin ReaderQuotas. Esta seccin de los binding HTTP
indica los lmites de tamao bajo los que se tienen que mantener las peticiones al
servicio para ser aceptadas o el tamao mximo de un array que intentemos enviar.
Por defecto el tamao mximo de array est establecido en 16384, con lo que, por
ejemplo, si intentamos enviar un array de bytes que contenga ms elementos que
16384 el servicio denegar la peticin.
Esta caracterstica est pensada para proteger a nuestro servicio de un posible ataque
DOS (Denial of Service) que, basndose en mensajes complejos, intente colapsar los
endpoints del servicio WCF. Debido a esto, debemos recordar siempre intentar ajustar
los valores de esta seccin en la medida de lo posible a los datos que vayamos a
recibir, si ajustamos estos parmetros a un valor Max.Int32 estaremos eliminando esta
defensa natural que tiene nuestro servicio.
CARRERAS PROFESIONALES
CIBERTEC
129
Simplemente debemos crear un nuevo binding para nuestro EndPoint y podremos ver
la seccin ReaderQuotas con los diferentes parmetros que debemos configurar como
mximos bytes por lectura o longitud mxima de un array. Una vez modificados los
valores debemos aplicar la configuracin a nuestro Endpoint:
Y ya solo nos queda guardar el trabajo que hemos realizado y veremos los valores
reflejados en el archivo web.config de nuestro servicio:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="NewBinding0">
<readerQuotas
maxDepth="128"
maxStringContentLength="1024"
maxArrayLength="131072"
maxBytesPerRead="524288"
maxNameTableCharCount="4">
</readerQuotas>
</binding>
</basicHttpBinding>
</bindings>
<services>
<service name="WcfService.Service1">
<endpoint
address="basichttp"
binding="basicHttpBinding"
bindingConfiguration="NewBinding0"
name="basicHTTP"
contract="WcfService.IService1">
</endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
CIBERTEC
CARRERAS PROFESIONALES
130
Simplemente haremos click con el botn derecho del ratn sobre nuestro proyecto
Windows Phone 7 y seleccionaremos la opcin Aadir referencia a servicio.
Una vez hecho esto, solo tenemos que seleccionar el servicio, indicar el nombre de
Namespace que deseamos asignarle y presionar OK para que Visual Studio 2010 se
encargue de generar un proxy automticamente para que tengamos acceso a todos
los mtodos y clases de nuestro servicio.
Solo tendremos que crear una instancia nueva de la clase que deseemos usar, y
podremos acceder a los mtodos del servicio.
CARRERAS PROFESIONALES
CIBERTEC
131
CIBERTEC
CARRERAS PROFESIONALES
132
LABORATORIO 5.1
Seleccione la opcin
New Project para crear
un nuevo proyecto
Asigne nombre al
proyecto
CARRERAS PROFESIONALES
CIBERTEC
133
CIBERTEC
CARRERAS PROFESIONALES
134
Seleccione la
plantilla Web
Seleccione el
Item WCF
Service
Asigne un
nombre al
Service
CARRERAS PROFESIONALES
CIBERTEC
135
4. Definiendo el Contrato
Para indicar que se trata de un contrato usamos el atributo ServiceContract al declarar
la Interface. Para definir qu mtodos tendr el contrato usamos el atributo
OperationContract. Este contrato es el que usarn los clientes para saber que
operaciones tiene un servicio y que datos intervienen en la comunicacin. Para indicar
que la clase tambin debe estar en el contrato, usamos los atributos DataContract y
DataMember para la deficinin de la clase y sus propiedades respectivamente.
DataContract
definicin de la clase
DataMember
definicin del mtodo
Definiendo la interface
IServiceVenta, el cual
se define los mtodos
de
la
interface,
tal
como se muestra.
Definiendo la Interface:
Contrato
Definiendo el mtodo:
OperationContract
CIBERTEC
CARRERAS PROFESIONALES
136
5. Definiendo el Servicio
Ahora lo que debemos hacer es implementar esta Interfaz (contrato), y crear la clase
que dar este servicio, para tal efecto implementamos los mtodos Listado() y
ListadoxNombre, tal como se muestra.
Implementando el mtodo
Listado el cual retorna los
registros de tb_clientes
Implementando el mtodo
ListadoxNombre retorna los
registros de tb_clientes por las
iniciales del nombre
CARRERAS PROFESIONALES
CIBERTEC
137
Seleccione la opcin
New Project para
crear un nuevo
proyecto
Desde el IDE New Project, seleccione la plantilla (Template) Visual C#, el cual
listara un conjunto de proyectos
CIBERTEC
CARRERAS PROFESIONALES
138
Seleccione la plantilla
Windows Phone en
Visual C#
Asigne nombre al
proyecto
Diseo del
Control de
datos
CARRERAS PROFESIONALES
CIBERTEC
139
9. Programacin
A continuacin programa las operaciones para sincronizar el servicio desde el
aplicativo Windows Phone.
CIBERTEC
CARRERAS PROFESIONALES
140
Presione la tecla F5, para ejecutar el proceso, el cual se visualiza los datos de los
clientes.
CARRERAS PROFESIONALES
CIBERTEC
141
LABORATORIO 5.2
2. Programacin
Programa el proceso de la consulta, tal como se muestra
Referencia del
servicio
Instancia del
servicio
Definir el evento
del servicio
Definir el mtodo
del evento
Ejecutar el
mtodo con su
parmetro
Presione la tecla F5, ingrese la inicial del nombre del cliente y ejecute.
CIBERTEC
CARRERAS PROFESIONALES
142
Resumen
Windows Communication Foundation o WCF (tambin conocido como Indigo),
es la nueva plataforma de mensajera que forma parte de la API de la Plataforma
.NET 3.0 (antes conocida como WinFX, y que no son ms que extensiones para la
version 2.0).
En el corazn de Windows Communication Foundation est una arquitectura de
capas que soporta una gran variedad de estilos para el desarrollo de aplicaciones
distribuidas.
Los contratos WCF contienen informacin relativa a lo que un servicio ofrece al
cliente y el tipo de informacin que va a poner a disposicin. Existen tres tipo de
contratos: de datos, de mensaje y de servicio:
Servicio: Los contratos son definidos por el CLR por medio de clases o interfaces.
stas, al ser utilizadas en los servicios, son convertidas a un formato comn para
que el servicio pueda ser usado por distintas plataformas con total compatibilidad.
o
ms
CARRERAS PROFESIONALES
de
una
tecnologa
para
cumplir
satisfactoriamente
los
CIBERTEC
143
requerimientos. De este modo, los desarrolladores harn una tarea de una nica
manera.
Si desea saber ms acerca de estos temas, puede consultar las siguientes
pginas.
Tutorial de WCF
http://geeks.ms/blogs/jnunez/archive/2007/08/10/tutorial-wcf-1-de-5.aspx
Implementacin de Windows Phone y WCF
http://eliasmarkelis.wordpress.com/2011/02/27/windows-phone-7-with-wcf/
http://www.cesnavarra.net/cesdigitalblog/Lists/Entradas%20de%20blog/Post.asp
x?ID=98
CIBERTEC
CARRERAS PROFESIONALES
144
CARRERAS PROFESIONALES
CIBERTEC
145
UNIDAD DE
APRENDIZAJE
DESARROLLANDO
UNA
APLICACIN
XNA
EN
WINDOWS PHONE
LOGRO DE LA UNIDAD DE APRENDIZAJE
Al trmino de la unidad, el alumno aprende a construir juegos para Windows Phone
donde cargara imgenes y dibujar texto, as como utilizar transformaciones e
iluminacin.
TEMARIO
3.1 Tema 6
3.1.1.
3.1.2.
3.1.3.
3.1.4.
3.2 Tema 7
3.2.1.
:
:
:
:
:
:
:
3.2.2.
3.2.3.
3.2.4.
3.3 Tema 8
3.3.1.
3.3.2.
3.3.3.
:
:
:
:
:
:
:
XNA
XNA, caractersticas y requerimientos
Plantilla del Proyecto, objetos del proyecto
Objetos Sprites
Laboratorio
Animacin en XNA
Animacin: movimiento de imgenes, rotacin, tintes,
acelermetro
Animacin por dispositivos de entrada, Touch
Manejo de colisiones
Laboratorio
Creando un Game FrameWork
Diseo de un Game FrameWork
Clases de un Game FrameWork
Laboratorio
ACTIVIDADES PROPUESTAS
Los alumnos aprendern a construir una aplicacin de juegos por Windows
Phone utilizando el framework XNA
Los alumnos aprendern a manejar los cdigos bsicos para realizar un dibujo
en una aplicacin por Windows Phone.
CIBERTEC
CARRERAS PROFESIONALES
146
CARRERAS PROFESIONALES
CIBERTEC
3.1
147
XNA
Como vemos, por un lado tenemos lo que son las clases ya prefabricadas para crear
ms rpido nuestros juegos, y por otro lado tenemos la herramienta de desarrollo para
usar dichas libreras y aprovecharlas al mximo.
3.1.1.3 Requerimientos del desarrollo XNA
Para poder empezar a crear videojuegos con el Framework de Microsoft (XNA),
necesitamos primero saber que necesitamos tener en cuestin de requerimientos. En
el siguiente post veremos los requerimientos necesarios para instalar y usar el XNA
GameStudio 4.0:
A. Requisitos de Hardware
2 GB RAM
CIBERTEC
CARRERAS PROFESIONALES
148
Para ejecutar y depurar juegos de XNA Framework para Windows Phone con el
emulador de Windows Phone, se necesita una tarjeta grfica que admita como mnimo
DirectX 10, con un controlador de WDDM 1.1 auxiliar. Enace para descargar las
herramientas de desarrollo XNA.
Para instalar en XP deben instalar solo el XNA Game Studio, si usa Vista con SP2 o
Windows 7, puedes instalar las herramientas de Windows Phone 7 que te permitirn
tambin poder programar para el celular.
B. Sistema Operativo
En Windows XP no hay soporte para desarrollo de videojuegos en Windows Phone 7.
Windows Vista necesita mnimo SP2
Windows 7 tiene los requerimientos para trabajar con XNA.
El primer paso es abrir Microsoft Visual Studio 2010. Una vez abierto, hacemos como
siempre para crear nuevos proyectos en Visual Studio, si nunca lo has hecho tienes
que ir a File>New>Proyect.
CARRERAS PROFESIONALES
CIBERTEC
149
Selecciona la categora de proyecto: XNA Game Studio 4.0 bajo Visual C#.
La solucin trae 2 proyectos como podemos ver. El primero se llama igual que el
nombre de proyecto y el segundo tienen ese nombre y junto con la palabra Content,
nos indica que ah es donde guardaremos el contenido que son las texturas, sonidos,
etc.
CIBERTEC
CARRERAS PROFESIONALES
150
Junto con el proyecto principal 11DiasConXNA miramos que trae 2 clases que son
Game1.cs y Program.cs. El archivo Program.cs es la clase de entrada. Cuando el
juego corra, esto es lo que correr, y esta clase hace una instancia de la otra clase
Game1.cs para empezar el juego. Aqu tenemos el mtodo Main.
C. LoadContent()
Aqu podemos cargar el contenido. En sesiones ms, usaremos el ContentManager
D. Update(GameTime gameTime)
Este mtodo se ejecutara cada cierto tiempo (por defecto 60 veces cada segundo pero
es cambiable, o para los que lo entiendan mejor 60FPS).
Aqu pondremos la lgica del juego, los cambios de posiciones, las validaciones, todo
lo que tenga que ver con actualizar variables del juego y verificar variables va aqu.
E. Draw(GameTime gameTime)
Es el mtodo donde pondremos y discriminaremos qu es lo que se dibuja y que no.
Todos los mtodos para dibujar estarn aqu. A diferencia del mtodo anterior, XNA
ejecutar este mtodo cuantas veces pueda sin tener un tiempo fijo como el anterior
de 60FPS.
CARRERAS PROFESIONALES
CIBERTEC
F.
151
UnloadContent()
Este mtodo que nos permitir quitar todos los recursos ocupados y
liberarlos de la memoria de la PC
de
tiempo
entre
las
llamadas
al
mtodo Update. Si el juego est tomando demasiado tiempo para completar el mtodo
Update, puede provocar un cortocircuito en la lgica para mejorar la respuesta del
juego. Para configurar el bucle del juego utilice un intervalo de tiempo variable, usted
simplemente necesita para establecer la propiedad IsFixedTimeStep de la clase de
juego en falso. Dado que el mtodo se llama a Update tan pronto como el mtodo
Draw ha terminado, no hay necesidad de especificar un TargetElapsedTime.
CIBERTEC
CARRERAS PROFESIONALES
152
Una vez cargada la imagen al proyecto, terminamos este paso. Para ver sus
propiedades den click sobre ella y vean las propiedades, la propiedad Asset Name
representa el nombre del objeto.
CARRERAS PROFESIONALES
CIBERTEC
153
3.1.3 SPRITES
El trmino Sprite se suele utilizar para referirse a una imagen que representa una
pequea parte de una escena.
CIBERTEC
CARRERAS PROFESIONALES
154
CARRERAS PROFESIONALES
CIBERTEC
155
CIBERTEC
como
archivos
de
tipo
MP3
usaremos
la
clase
CARRERAS PROFESIONALES
156
cancion = Content.Load<Song>("musicaFondo");
musicaFondo = Content.Load<Song>("musicaFondo");
CARRERAS PROFESIONALES
CIBERTEC
157
CIBERTEC
CARRERAS PROFESIONALES
158
LABORATORIO 6.1
Seleccione la opcin
New Project para crear
un nuevo proyecto
Desde el IDE New Project, seleccione la plantilla (Template) Visual C#, el cual
listara un conjunto de proyectos
CARRERAS PROFESIONALES
CIBERTEC
159
Seleccione la plantilla
Windows Phone Game
en Visual C#
Asigne nombre al
proyecto
Proyecto Content ,
agregamos el SpriteFont
llamado Segoe14
CIBERTEC
CARRERAS PROFESIONALES
160
CARRERAS PROFESIONALES
CIBERTEC
161
Definir la orientacin
de la pantalla en el
constructor
Inicializa la clase
Game1
CIBERTEC
CARRERAS PROFESIONALES
162
Programa el evento Draw para dibujar el texto; el objeto SpriteBatch realiza el dibujo
del texto (DrawString) entre las llamadas al inicio y fin; puede haber varias llamadas a
DrawString para dibujar texto y de dibujo para dibujar mapas de bits
CARRERAS PROFESIONALES
CIBERTEC
163
LABORATORIO 6.2
Desde el IDE New Project, seleccione la plantilla (Template) Visual C#, el cual
listara un conjunto de proyectos
Seleccione la plantilla
Windows Phone
Game en Visual C#
Asigne nombre al
proyecto
Agrega un
sprintfont al
proyecto Content
CIBERTEC
CARRERAS PROFESIONALES
164
Referencia la librera
System.Text
Programa el mtodo Update el cual evala las horas durante un intervalo de tiempo, si
son diferentes, la nueva hora se agrega al texto y se configura su dimensin.
CARRERAS PROFESIONALES
CIBERTEC
165
Programa el evento Draw para dibujar el texto; el objeto SpriteBatch realiza el dibujo
del texto (DrawString) entre las llamadas al inicio y fin; puede haber varias llamadas a
DrawString para dibujar texto y de dibujo para dibujar mapas de bits.
CIBERTEC
CARRERAS PROFESIONALES
166
LABORATORIO 6.3
Desde el IDE New Project, seleccione la plantilla (Template) Visual C#, el cual
listara un conjunto de proyectos
Seleccione la plantilla
Windows Phone
Game en Visual C#
Asigne nombre al
proyecto
CARRERAS PROFESIONALES
CIBERTEC
167
CIBERTEC
CARRERAS PROFESIONALES
168
CARRERAS PROFESIONALES
CIBERTEC
169
LABORATORIO 9.4
Desde el IDE New Project, seleccione la plantilla (Template) Visual C#, el cual
listara un conjunto de proyectos
Seleccione la
plantilla Windows
Phone Game en
Visual C#
Asigne nombre al
proyecto
CIBERTEC
CARRERAS PROFESIONALES
170
mtodo LoadContent() cargar las imgenes en el array Logo, tal como se muestra
En el
CARRERAS PROFESIONALES
CIBERTEC
171
CIBERTEC
CARRERAS PROFESIONALES
172
CARRERAS PROFESIONALES
CIBERTEC
173
Resumen
XNA se refiere a 2 cosas en especial: El Framework o marco de desarrollo y el
XNA Game Studio.
Draw(GameTime
gameTime):
Es
el
mtodo
donde
pondremos
UnloadContent(): Este mtodo que nos permitir quitar todos los recursos
ocupados y liberarlos de la memoria de la PC
CIBERTEC
CARRERAS PROFESIONALES
174
archivo
de
sonido
como
el
wav
usaremos
el
tipo
de
variable
CARRERAS PROFESIONALES
CIBERTEC
3.2
175
ANIMACIONES EN XNA
Cuando las coordenadas estn escritas, estn encerrados entre parntesis dentro del
cual los dos. Los valores se colocan separados por una coma. El primer valor es la
coordenada x, y el segundo es la ordenada de coordenadas.
CIBERTEC
CARRERAS PROFESIONALES
176
Lo siguiente es inicializar una posicin inicial para el grfico. El valor por defecto el
objeto Vector2 no inicializado tiene una coordenada (0, 0), correspondiente a la
esquina superior izquierda de la pantalla. Para ello le asignaremos las coordenadas
(100, 100) como nuestra posicin inicial. Puede ser til para poder restablecer la
posicin ms tarde, sin embargo, por lo que vamos a crear un nuevo procedimiento
llamado RESETGAME y configurar el sistema de aqu.
Codifique el mtodo Draw para modificar y utilizar la nueva variable posicin. Esto se
logra mediante la eliminacin de la variable posicin Vector2, y en lugar de utilizar la
variable _Position.
//Dibujamos el sprite
spriteBatch.Draw(_Texture, _Position, Color.White);
Por ltimo, tenemos que cambiar la posicin almacenada en la variable _Position para
que el grfico se mueva realmente. Aunque sera fcil de hacer esto en el cdigo de
dibujo, este no sera el lugar apropiado para realizar este cambio, la funcin de dibujo
debe ser totalmente centrado en la operacin de dibujo, y no solo en la actualizacin
de las variables de juego. En su lugar, utilice el procedimiento de Update para realizar
los cambios de variables.
CARRERAS PROFESIONALES
CIBERTEC
177
//Dibujamos el sprite
protected override void Update(GameTime gameTime){
//Permite al juego salir
if (GamePad.GetState(PlayerIndex.One).Buttons.Back ==
ButtonState.Pressed)
this.Exit();
//Actualiza el estado del juego
_Position.Y += 5;
if (_Position.Y >= Window.ClientBounds.Bottom)
_Position.Y = 0;
base.Update(gameTime);
}
3.2.1.2 Rotacin
Un Sprite tambin tienen la capacidad rotar fcilmente a cualquier ngulo que desee.
El ngulo se especifica mediante el uso de cualquiera de las llamadas al mtodo
Draw, pasando por el ngulo para el parmetro adecuado. El ngulo se mide en
radianes las agujas del reloj, lo que significa que un ngulo de 0 es la posicin
correcta, PI / 2 se gira un cuarto de la vuelta a la derecha, el PI es al revs, y 3 PI / 2
se gira tres cuartas partes de los camino. Parece que trabajar en radianes es muy
poco natural, sera conveniente trabajar en grados. XNA est aqu para ayudarle con
este, ya que ofrece una clase muy til llamado MathHelper, que est lleno de
funciones estticas para ayudar con los grficos relacionados con las funciones
matemticas. Una de esas funciones es ToRadians, que convierte el ngulo
suministrado grados en radianes. El uso de este parmetro con la rotacin de la
funcin de dibujar hace proporcionando el ngulo mucho ms fcil.
3.2.1.3 Tintes
A lo largo de las llamadas al mtodo Draw, podemos pasar como parmetro a Color,
para pasar diferentes colores en lugar del color blanco para pintar el grafico que est
siendo dibujado. Una aplicacin muy til de esta funcin es permitir que un solo grfico
se dibuje en diferentes colores, sin tener que aadir todos los grficos de diferentes
colores por separado en el proyecto de contenido. Si la imagen de origen se presenta
CIBERTEC
CARRERAS PROFESIONALES
178
en escala de grises, el color puede ser utilizado para mostrarla en cualquier color que
desee.
En realidad, hay dos maneras en que los niveles de intensidad se puede especificar:
ya sea como valores enteros 0 a 255 como se describe, o como flotar valores de 0 a 1.
Exactamente cul de estos enfoques que usted prefiere es de usted, sino que son
funcionalmente equivalentes.
CARRERAS PROFESIONALES
CIBERTEC
179
#if WINDOWS_PHONE
Accelerometer acc = new Accelerometer();
#endif
protected override void LoadContent() {
...
#if WINDOWS_PHONE acc.ReadingChanged += (s, e) => {
if (e.X >= -1 && e.X <= 1){
direction.X += (float)(e.X);
}
if (e.Y >= -1 && e.Y <= 1) {
direction.Y -= (float)(e.Y);
}
};
acc.Start();
#endif
}
acelermetro
pertinentes, cambiando la velocidad que la pelota est viajando. Ahora, los usuarios
inclinar el dispositivo, la pelota acelerar o frenar, lo que les permite mantener la pelota
lejos de las paredes.
CIBERTEC
CARRERAS PROFESIONALES
180
En el desarrollo del juego, no hay tiempo de inactividad, por lo que sera demasiado
caro para que los desarrolladores para registrar eventos. Por el contrario, depende de
cmo el desarrollador implemente el programa para sondear constantemente
dispositivos de entrada: de preguntar si el jugador ha realizado ninguna accin en
estos dispositivos.
Esa es una forma ligeramente diferente de ver mensajes de entrada y otros eventos,
pero una vez que te diste cuenta, el desarrollo del juego se hace mucho ms sentido.
Mtodo
Descripcin
Keys[]
GetPressedKeys( )
se invoca al mtodo
bool
key)
bool
key)
if(Keyboard.GetState( ).IsKeyDown(Keys.A))
// BAM!!! A is pressed!
CARRERAS PROFESIONALES
CIBERTEC
181
Para comprobar la entrada por teclado, hay dos mtodos para elegir la hora de
determinar dnde poner una cierta lgica en XNA bucle del juego:
CIBERTEC
CARRERAS PROFESIONALES
182
El objeto TouchLocation tambin tiene una propiedad del estado que seala si el punto
de contacto se ha movido, prensado, o en libertad. En el caso de ser movida, puede
intentar recuperar la posicin anterior a travs del mtodo TryGetPreviousLocation.
Para implementar el algoritmo en el juego, tendr que crear un rectngulo para cada
Sprite basado en la posicin del sprite y la anchura y la altura de los marcos para los
Sprites. La estructura Rectangle tiene un mtodo llamado Intersect que se pueden
utilizar para determinar si dos rectngulos se cruzan:
Rect1.Intersects(Rect2);
CARRERAS PROFESIONALES
CIBERTEC
183
LABORATORIO 7.1
Implementa una aplicacin en XNA que permita mover una pelota alrededor de la
pantalla y cuando de una vuelta, cambiar la imagen de la pelota.
1. Inicio del Proyecto
Para iniciar un proyecto Windows Phone: Seleccione la opcin Create New Proyect
Desde el IDE New Project, seleccione la plantilla (Template) Visual C#, el cual
listara un conjunto de proyectos
Seleccione la plantilla
Windows Phone Game
en Visual C#
Asigne nombre al
proyecto
CIBERTEC
CARRERAS PROFESIONALES
184
2. Programacin.
Defina los objetos del Juego: arreglo de imgenes, ndice y las coordenadas del juego.
Inicializar los valores de las variables e instanciar el rectngulo cuadro, tal como se
muestra.
Programe el mtodo LoadContent para cargar las imgenes en el arreglo pelotas, tal
como se muestra
CARRERAS PROFESIONALES
CIBERTEC
185
Implemente el mtodo Update() donde evale la arista (variable vuelta) que est
movindose la foto, cuando la imagen esta en el borde de la pantalla, cambia de vuelta
o arista, y cuando completa el circuito, cambia de imagen, tal como se muestra
Presione la tecla F5, para iniciar el juego, donde se visualiza que el objeto circula
alrededor de la pantalla.
CIBERTEC
CARRERAS PROFESIONALES
186
LABORATORIO 7.2
Implementando una aplicacin en XNA para realizar un juego de movimiento y
colisin.
Implementa una aplicacin en XNA que permita mover una pelota alrededor de la
pantalla donde al colisionar en uno de los extremos de la pantalla, la pelota rebota.
Desde el IDE New Project, seleccione la plantilla (Template) Visual C#, el cual
listara un conjunto de proyectos
Seleccione la plantilla
Windows Phone
Game en Visual C#
Asigne nombre al
proyecto
Agregar el archivo
ball.png al proyecto
CARRERAS PROFESIONALES
CIBERTEC
187
PROGRAMACION
1. Defina los objetos para programar el juego: Texture2D y el marco. Para realizar el
movimiento de la imagen, definir variables para manejar las posiciones del marco as
como aceleraciones de las posiciones x e y.
CIBERTEC
CARRERAS PROFESIONALES
188
Programa el mtodo Draw, donde permitir dibujar la nueva posicin del baln,
actualizando los valores de marco.
CARRERAS PROFESIONALES
CIBERTEC
189
LABORATORIO 7.3
Desde el IDE New Project, seleccione la plantilla (Template) Visual C#, el cual
listara un conjunto de proyectos
Seleccione la plantilla
Windows Phone
Game en Visual C#
Asigne nombre al
proyecto
CIBERTEC
CARRERAS PROFESIONALES
190
PROGRAMACION
Declare el conjunto de objetos para el juego a implementar: Texture2D, Rectangle,
SriteFont, SoundEffects y variables de posicin, tal como se muestra.
Programa el mtodo Update del Game1, en este proceso, el paddle se mover hacia
la vertical, de un extremo a otro; el baln ira desplazando de lado a lado, donde, si se
intersecan, se incrementa el score.
CARRERAS PROFESIONALES
CIBERTEC
191
Programa el mtodo Draw, donde permitir dibujar la nueva posicin de los objetos del
juego, actualizando los valores de sus posiciones.
CIBERTEC
CARRERAS PROFESIONALES
192
LABORATORIO 10.4
Implementa una aplicacin en XNA que permita mover una paleta hacia lo largo de la
pantalla utilizando las teclas de direccin del teclado, colisionando con la pelota que
cae desde lo alto de la pantalla
1. Inicio del Proyecto
Para iniciar un proyecto Windows Phone: Seleccione la opcin Create New Proyect
Desde el IDE New Project, seleccione la plantilla (Template) Visual C#, el cual
listara un conjunto de proyectos
Seleccione la plantilla
Windows Phone
Game en Visual C#
Asigne nombre al
proyecto
CARRERAS PROFESIONALES
CIBERTEC
193
PROGRAMACION
Declare el conjunto de objetos para el juego a implementar: Texture2D, Rectangle,
SriteFont, SoundEffects
Programa el mtodo Update del Game1, en este proceso, el paddle se mover hacia
la vertical, de un extremo a otro utilizando las teclas de desplazamiento del teclado; el
baln ira desplazando de arriba hacia abajo, donde, si se intersecan, se incrementa el
score
CIBERTEC
CARRERAS PROFESIONALES
194
Programa el mtodo Draw, donde permitir dibujar la nueva posicin de los objetos del
juego, actualizando los valores de sus posiciones
CARRERAS PROFESIONALES
CIBERTEC
195
Resumen
Para mover los objetos, que va a tener que cambiar las posiciones en la que se
dibujan. En un momento inicial, las imgenes son aadidas en posiciones
constantes, nuestro objeto es que las imgenes se muevan a lo largo de la pantalla
Las imgenes estticas no son muy interesantes, as que vamos a hacer el
movimiento grfico, para ello especificamos su posicin por el que pasa una
estructura Vector2 inicia con los 100 valores y 100. Estos dos valores son las
posiciones x e y en el que ser el grfico dibujado, y representar a sus la esquina
superior izquierda. Esta posicin se conoce como un sistema de coordenadas.
Un Sprite tambin tienen la capacidad rotar fcilmente a cualquier ngulo que
desee. El ngulo se especifica mediante el uso de cualquiera de las llamadas al
mtodo Draw, pasando por el ngulo para el parmetro adecuado.
A lo largo de las llamadas al mtodo Draw, podemos pasar como parmetro a
Color, para pasar diferentes colores en lugar del color blanco para pintar el grafico
que est siendo dibujado. Una aplicacin muy til de esta funcin es permitir que
un solo grfico que se dibuja en diferentes colores, sin tener que aadir todos los
grficos de diferentes colores por separado en el proyecto de contenido.
El acelermetro es un sensor de entrada, detecta la aceleracin del dispositivo
que el usuario se mueve o rota. El acelermetro del telfono de Windows informa
en tres dimensiones (3D) de vectores, en forma de x, y, z y los valores. Estos
valores indican la direccin y la magnitud de la fuerza que se aplican actualmente
en el dispositiv
La entrada de teclado se maneja a travs de la clase Keyboard, que est en el
espacio de nombres Microsoft.XNA.Frame.Work.Input. La clase Keyboard tiene un
mtodo esttico llamado GetState que recupera el estado actual del teclado en
forma de una estructura KeyboardState. La estructura KeyboardState contiene tres
mtodos clave que le dar la mayor parte de la funcionalidad que necesita.
En una aplicacin de Silverlight, cuando el usuario toca la pantalla, uno o ms
eventos de ratn se plantean. En un juego de XNA, la deteccin de la entrada del
usuario se realiza dentro del mtodo de actualizacin. El siguiente cdigo recupera
el estado actual del panel tctil como una matriz de objetos TouchLocation. A partir
de este la Propiedad de posicin se puede consultar para determinar la ubicacin
del punto de contacto. Recuerde que todos los Dispositivos Windows Phone sern
por lo menos cuatro puntos de contacto
CIBERTEC
CARRERAS PROFESIONALES
196
CARRERAS PROFESIONALES
CIBERTEC
3.3
197
Los ejemplos que hemos estado viendo han proporcionado los mecanismos para
mover un pequeo nmero de sprites, pero cualquier juego de las necesidades reales
para el seguimiento de objetos mucho ms que esto. En lugar de construir todos los
objetos en el juego sobre una base ad hoc, vamos a construir el marco dentro del cual
los objetos pueden ser manejados.
Estos objetos se utilizan para todos los elementos del juego que tenemos que sacar:
ellos sern los azulejos que caen en un juego de Tetris, los fantasmas, los puntos, y el
jugador de Pac Man, y todas las naves espaciales y las balas de los invasores del
espacio. Los objetos se conocen varias cosas acerca de s mismos (por ejemplo,
donde estn en la pantalla) y nos permitir gestionar un mecanismo coherente y
simple para el movimiento y la prestacin eficiente.
Proporcionando una implementacin sencilla y flexible para los objetos del juego es la
principal rea que vamos a abordar en el diseo y construccin de la estructura del
juego. Vamos a tomar ventaja de las caractersticas de orientacin. NET objeto en el
diseo del marco. Vamos a crear una clase base abstracta que soporta un conjunto
bsico de funciones que sern de utilidad general en cualquiera de los objetos de
nuestro juego. A continuacin, se derivar a otra clase abstracta de este y establecer
esta clase derivada para proporcionar apoyo para los objetos del juego en 2D basados
en sprites.
CIBERTEC
CARRERAS PROFESIONALES
198
CARRERAS PROFESIONALES
CIBERTEC
199
textura para que acabe con l, con un color de tinte con un rectngulo de origen para
el procesamiento de texturas parcial (si es necesario), y un capa de fondo para ayudar
a definir el orden en que los sprites se debe prestados.
GameObjectBase
Abstract Class
SpriteObject
Class
GameObjectBase
No contiene ninguna lgica de los objetos, sin embargo: no sabe nada acerca de cmo
mover o cambiar ninguna de sus propiedades. Esta lgica se aadir mediante la
derivacin de nuevas clases de SpriteObject, como veremos en breve. Como las
clases derivadas son generalmente lo que vamos a utilizar cuando construimos
nuestros juegos, pero si un sprite esttico simple es todo lo que se requiere, los casos
de SpriteObject pueden ser creadas y aadidas al juego. El constructor proporciona
diferentes sobrecargas para configurar fcilmente algunas de las propiedades
comunes de la clase.
Propiedad
Descripcin
SpriteTexture
PositionX,
PositionY
OriginX, OriginY y Almacena las coordenadas de origen del Sprite, utiliza un par de
CIBERTEC
CARRERAS PROFESIONALES
200
Origin
Angle
ScaleX y ScaleY
SourceRect
SpriteColor
LayerDepth
La creacin de una instancia de esta clase (o una clase derivada de ella) permite una
gran flexibilidad para mostrar el sprite sin necesidad de otras variables que se definan.
Simplifica en gran medida el cdigo repetitivo que de otra manera tendra que escribir
para almacenar toda esta informacin.
CARRERAS PROFESIONALES
CIBERTEC
201
GameObjectBase
Abstract Class
SpriteObject
Class
GameObjectBase
TextObject
Class
SpriteObject
CIBERTEC
CARRERAS PROFESIONALES
202
Los cuatro de estas propiedades estn respaldados por una variable de clase privada
en lugar de ser auto implementada utilizando el {get; set;} sintaxis. Esto nos permite
enlazar en su conjunto de cdigos y realizar un procesamiento adicional en relacin
con la alineacin del texto.
Los objetos del juego se guardan en una lista que contiene los objetos de
GameObjectBase, que nos permite almacenar en su interior el SpriteObject derivados
y los objetos TextObject juego que hemos discutido hasta ahora, as como a las clases
especficas del juego que se derivan de una de estas.
La clase tambin contiene algunos mtodos sencillos que podemos llamar para salvar
a tener que escribir las funciones en la clase de juego del proyecto principal.
Se deriva de la clase Microsoft.XNA.Framework.Game (de la que todos los proyectos
de juego actual deben derivar una clase nica). Esto significa que en los proyectos de
nuestro
juego
podemos
derivar
la
clase
de
juego
principal
de
CARRERAS PROFESIONALES
CIBERTEC
203
XNA.Framework.Game
Class
GameHost
Class
GameObjects
GameObjectBase
Abstract Class
SpriteObject
Class
GameObjectBase
TextObject
Class
SpriteObject
Una vez que el juego se inicia y en funcionamiento, dos mtodos adicionales estn
disponibles para simplificar el cdigo de la clase principal del juego:
Mtodos
Descripcin
UpdateAll
DrawSprites
DrawText
CIBERTEC
CARRERAS PROFESIONALES
204
En LoadContent, las texturas y las fuentes se cargan en la misma forma, pero esta vez
se aaden a las colecciones GameHost.
La ltima lnea de cdigo en las llamadas LoadContent en una nueva funcin llamada
RESETgame, en el que crear los objetos que va a hacer el trabajo cuando el juego se
est ejecutando, y su cdigo se muestra.
CARRERAS PROFESIONALES
CIBERTEC
205
CIBERTEC
CARRERAS PROFESIONALES
206
LABORATORIO 11.1
Implementando una aplicacin en XNA para crear un Game Framework.
Implementa una aplicacin en XNA que permita define una clase Balon de tipo
Texture2D, definiendo las caractersticas de la clase, implementando la instancia de la
clase en el Game.
Desde el IDE New Project, seleccione la plantilla (Template) Visual C#, el cual
listara un conjunto de proyectos
Seleccione la plantilla
Windows Phone Game
en Visual C#
Asigne nombre al
proyecto
CARRERAS PROFESIONALES
CIBERTEC
207
En la clase Balon,
defina los objetos de
la
clase:
Texture2D
pelota
y
una
estructura Vector2.
CIBERTEC
CARRERAS PROFESIONALES
208
Defina las propiedades Width y Height que retorne las dimensiones de la pelota.
Defina
el
mtodo
Initialize
inicializar
para
la
clase
Balon, y el mtodo
Draw que permita
dibujar la pelota.
CARRERAS PROFESIONALES
CIBERTEC
209
CIBERTEC
CARRERAS PROFESIONALES
210
En el mtodo Draw de la clase Game1, dibuje el objeto pelota. Presione, luego F5 para
ejecutar el juego.
LABORATORIO 11.2
Implementando una aplicacin en XNA para crear un Game Framework animado.
Implementa una aplicacin en XNA que permita define una clase Balon de tipo
Texture2D, definiendo las caractersticas de la clase, implementando la animacin del
baln dentro de la clase.
Desde el IDE New Project, seleccione la plantilla (Template) Visual C#, el cual
listara un conjunto de proyectos
Seleccione la plantilla
Windows Phone Game
en Visual C#
Asigne nombre al
proyecto
CARRERAS PROFESIONALES
CIBERTEC
211
CIBERTEC
CARRERAS PROFESIONALES
212
Defina los mtodos en la clase baln que permita inicializar el objeto pelota, as como
los mtodos que retornen el ancho y alto de la pelota.
CARRERAS PROFESIONALES
CIBERTEC
213
En la clase Game1, defina e instancia la clase Balon en el objeto llamado pelota, tal
como se muestra en la ventana de cdigo.
Programa el mtodo LoadContent para inicializar el objeto pelota, tal como se muestra.
CIBERTEC
CARRERAS PROFESIONALES
214
CARRERAS PROFESIONALES
CIBERTEC
215
Resumen
La Clase Game de XNA ofrece un motor flexible, para iniciar y conducir el juego, lo
que no ofrece algn mecanismo integrado para la gestin de los objetos del juego
que queremos mostrar y manipular dentro del juego
La primera clase es la clase GameObjectBase, una clase abstracta de la que
todas nuestras clases de objetos del juego en ltima instancia, se derivan. La
funcionalidad dentro de GameObjectBase es limitada, pero podemos declarar las
colecciones de objetos del juego mediante el uso de esta clase sin un principio la
necesidad de saber ms detalles sobre los tipos de objetos que se van a
almacenar.
Derivado de la clase GameObjectBase es la clase SpriteObject. Esta es una clase
concreta (no abstracta) en la que vamos a aadir toda la funcionalidad bsica que
puede ser que desee utilizar para colocar y sacar nuestros sprites. Un Sprite
tambin tienen la capacidad rotar fcilmente a cualquier ngulo que desee. El
ngulo se especifica mediante el uso de cualquiera de las llamadas al mtodo
Draw, pasando por el ngulo para el parmetro adecuado.
Tenemos una forma simple de representar un Sprite, pero sera muy til contar
con un mecanismo correspondiente para la representacin de texto. Esto lo
conseguimos mediante la creacin de la clase TextObject. El objeto Text tiene
muchas de las caractersticas que los Sprites (una posicin, origen, color, rotacin,
escalado, y ms), se derivan de TextObject; de los SpriteObject nos permite
aprovechar todas las propiedades SpriteObject acciones.
Los objetos del juego se guardan en una lista que contiene los objetos de
GameObjectBase, que nos permite almacenar en su interior el SpriteObject
derivados y los objetos TextObject juego que hemos discutido hasta ahora, as
como a las clases especficas del juego que se derivan de una de estas.La clase
tambin contiene algunos mtodos sencillos que podemos llamar para salvar a
tener que escribir las funciones en la clase de juego del proyecto principal.
Para llevar a cabo la actualizacin y funciones de dibujo, en un arreglo de objetos,
estas son absolutamente triviales, simplemente decirle a la mquina de juego para
realizar las actualizaciones necesarias y el dibujo.
As como los objetos del juego pueden aadir ms objetos en el mtodo Update,
para que puedan retirar los objetos tambin. Si un objeto se determina que ya no
es necesaria, simplemente se puede quitar de la coleccin y no recibir ms
llamadas de actualizar o Draw. Esto incluye la capacidad para que un objeto se
retire si es necesario.
CIBERTEC
CARRERAS PROFESIONALES
216
CARRERAS PROFESIONALES
CIBERTEC