Interacción táctil en el desarrollo de juegos para Windows Phone 7 Parte 1 Conceptos básicos de la interacción táctil
Introducción a Windows Phone 7
Plataforma de aplicaciones de Windows Phone 7
El entorno de desarrollo de Windows Phone 7 se lanzó oficialmente en septiembre de 2010, y los teléfonos inteligentes que realmente ejecutan Windows Phone 7 han comenzado a llegar al mercado.
Figura 1: HTC 7 Trophy con Windows Phone 7 vendido por HTC
Al crear una aplicación que se ejecuta en Windows Phone 7, puede elegir entre "Silverlight" y "XNA Framework" como marco de programación. En general, usará "XNA Framework" para el desarrollo de juegos y "Silverlight" para otras aplicaciones, como herramientas.
Esta sección usa XNA Framework para el desarrollo de juegos y explica cómo usar el panel táctil, que será la interfaz de usuario más utilizada para Windows Phone 7. El uso simple se describe en la ayuda de XNA Game Studio, por lo que me gustaría explicarlo de una manera un poco más profunda aquí.
Preparar el entorno de desarrollo
Esta sección es desde la perspectiva de alguien que incluso ha tocado ligeramente XNA Game Studio, por lo que omitiré instrucciones detalladas como la instalación y la configuración. Hay mucha información en la ayuda que viene con XNA Game Studio y en la web, así que compruébela usted mismo. También tengo algunos en mi sitio (http://sorceryforce.com/xna/).
- Herramientas de desarrollo de Windows Phone
- Zune Software
- Un dispositivo real que ejecuta Windows Phone 7 o un entorno multitáctil de Windows 7
- Aplicación de registro de desarrollador de Windows Phone
Figura 2: Microsoft Visual Studio 2010 Express para Windows Phone (incluido en las herramientas de desarrollo de Windows Phone)
Figura 3: Emulador de Windows Phone
¡Programación! - 1. Obtener información táctil
Acerca de este ejemplo
La versión de XNA Framework utilizada en Windows Phone 7 es "4.0", pero hasta entonces no había clases para paneles táctiles, y teclados, ratones y gamepads eran la corriente principal. Desde 4.0, Windows Phone 7 ha sido compatible, y se ha añadido una nueva clase dedicada a los paneles táctiles.
En este artículo, explicaremos principalmente esa clase, pero de hecho, si desea obtener información simple sobre la posición táctil, puede sustituir otra clase sin usar una clase para paneles táctiles. Es la clase "Mouse". En este ejemplo, usaremos la clase Mouse para obtener información táctil.
Objetivos de este programa de muestra
Cuando toca la pantalla, la imagen (sprite) se coloca de acuerdo con la posición táctil.
Figura 3,4: Los sprites aparecen en las posiciones tocadas
Programa - Declaración de campos
Me gustaría explicarlo junto con el programa de muestra de inmediato. Se omiten las explicaciones de las partes que no están directamente relacionadas con la operación táctil y los programas creados desde el principio, así que consulte el código fuente distribuido por separado.
public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
<summary>
テクスチャー
</summary>
Texture2D texture;
<summary>
タッチしている位置
</summary>
Vector2 touchPosition;
public Game1()
{
El campo declara una textura para dibujar en la ubicación táctil y una variable de estructura Vector2 para almacenar la posición táctil.
Programa - Carga de texturas
Las texturas ya se han agregado al proyecto de contenido y se cargan con el método LoadContent. Dado que el contenido no está directamente relacionado con los paneles táctiles, se omiten explicaciones detalladas.
Figura 6: Agregar una textura.png al proyecto de contenido
Figura 7: Imagen utilizada en este ejemplo
protected override void LoadContent()
{
// 新規の SpriteBatch を作成します。これはテクスチャーの描画に使用できます。
spriteBatch = new SpriteBatch(GraphicsDevice);
// テクスチャーをコンテンツパイプラインから読み込む
texture = Content.Load<Texture2D>("Texture");
}
Programa - Adquisición de información táctil
La información táctil se recupera en el método Game.Update.
Obtengo la información táctil usando la clase "Mouse" en lugar de una clase dedicada. Cuando se utiliza el método "Mouse.GetState", el estado actual del mouse se devuelve en la estructura "MouseState", por lo que puede obtener la posición táctil de las propiedades "MouseState.X" y "MouseState.Y".
protected override void Update(GameTime gameTime)
{
// ゲームの終了条件をチェックします。
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();
// マウスの状態を取得(ここではタッチパネルの簡易的な情報)
MouseState mouseState = Mouse.GetState();
// タッチしている位置を設定
touchPosition = new Vector2(mouseState.X, mouseState.Y);
base.Update(gameTime);
}
Una cosa a tener en cuenta sobre el uso de la clase Mouse para obtener información táctil es que solo devuelve información simple. Las únicas restricciones sobre la información que se puede obtener al utilizar la clase Mouse son "solo toque", "posición táctil (propiedad MouseState.X, MouseState.Y)" y "si tocar o no (MouseState.LeftButton)". No admite multitáctil ni gestos. Además, si obtienes una posición cuando no la has tocado, continuará devolviendo la posición táctil anterior. Dado que la información de entrada no se puede recibir a menos que se toque, la información de ubicación no se puede adquirir, como el mouse con el mouse.
Programa - Dibujo de texturas
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
// スプライトの描画準備
spriteBatch.Begin();
// タッチしている位置にテクスチャーを描画
spriteBatch.Draw(texture, touchPosition, Color.White);
// スプライトの一括描画
spriteBatch.End();
base.Draw(gameTime);
}
Resumen de este ejemplo
Dado que la clase Mouse sustituye la adquisición de información táctil, la información sólo se puede obtener obteniendo la posición táctil como en este ejemplo. Por el contrario, si usa una clase de solo contacto, puede obtener más información.
Por lo tanto, no carece de mérito obtener información táctil utilizando la clase Mouse. El uso de la clase Mouse proporciona las siguientes ventajas:
- Puede compartir código con juegos habilitados para mouse que se ejecutan en Windows
- La información de ubicación táctil se puede escribir con la menor cantidad de código
- Se puede omitir el procesamiento innecesario
Si solo usa un solo toque y solo posicionamiento táctil, puede aprovechar las ventajas anteriores mediante la clase Mouse.