Interaction tactile dans le développement de jeux pour Windows Phone 7 Partie 1 Principes de base de l’interaction tactile
Prise en main de Windows Phone 7
Plateforme d’applications Windows Phone 7
L’environnement de développement Windows Phone 7 a été officiellement lancé en septembre 2010, et les smartphones qui exécutent réellement Windows Phone 7 ont commencé à arriver sur le marché.
Figure 1 : HTC 7 Trophy avec Windows Phone 7 vendu par HTC
Lorsque vous créez une application qui s’exécute sur Windows Phone 7, vous pouvez choisir entre « Silverlight » et « XNA Framework » comme infrastructure du programme. En général, vous utiliserez « XNA Framework » pour le développement de jeux et « Silverlight » pour d’autres applications telles que des outils.
Cette section utilise XNA Framework pour le développement de jeux et explique comment utiliser l’écran tactile, qui sera l’interface utilisateur la plus utilisée pour Windows Phone 7. L’utilisation simple est décrite dans l’aide de XNA Game Studio, j’aimerais donc l’expliquer de manière un peu plus approfondie ici.
Préparez votre environnement de développement
Cette section est du point de vue de quelqu’un qui a même légèrement touché XNA Game Studio, donc je vais omettre des instructions détaillées telles que l’installation et la configuration. Il y a beaucoup d’informations dans l’aide fournie avec XNA Game Studio et sur le Web, alors veuillez vérifier vous-même. J’en ai aussi sur mon site (http://sorceryforce.com/xna/).
- Outils de développement Windows Phone
- Logiciel Zune
- Un appareil réel exécutant Windows Phone 7 ou un environnement tactile multipoint Windows 7
- Application d’inscription des développeurs Windows Phone
Figure 2 : Microsoft Visual Studio 2010 Express pour Windows Phone (inclus dans les outils de développement Windows Phone)
Figure 3 : émulateur Windows Phone
Programmation! - 1. Obtenir des informations tactiles
À propos de cet exemple
La version du XNA Framework utilisée dans Windows Phone 7 est « 4.0 », mais jusque-là, il n’y avait pas de classes pour les écrans tactiles, et les claviers, les souris et les manettes de jeu étaient le courant dominant. Depuis la version 4.0, Windows Phone 7 est pris en charge, et une nouvelle classe dédiée aux écrans tactiles a été ajoutée.
Dans cet article, nous expliquerons principalement cette classe, mais en fait, si vous souhaitez obtenir des informations simples sur la position tactile, vous pouvez remplacer une autre classe sans utiliser de classe pour les écrans tactiles. C’est la classe « Mouse ». Dans cet exemple, nous allons utiliser la classe Mouse pour obtenir des informations tactiles.
Objectifs de cet exemple de programme
Lorsque vous touchez l’écran, l’image (sprite) est placée en fonction de la position tactile.
Figure 3,4 : Les sprites apparaissent aux positions touchées
Programme - Déclaration de champs
J’aimerais l’expliquer tout de suite avec l’exemple de programme. Les explications des parties qui ne sont pas directement liées au fonctionnement tactile et aux programmes créés depuis le début sont omises, veuillez donc vous référer au code source distribué séparément.
public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
<summary>
テクスチャー
</summary>
Texture2D texture;
<summary>
タッチしている位置
</summary>
Vector2 touchPosition;
public Game1()
{
Le champ déclare une texture à dessiner à l’emplacement tactile et une variable de structure Vector2 pour stocker la position tactile.
Programme - Chargement des textures
Les textures sont déjà ajoutées au projet de contenu et chargées avec la méthode LoadContent. Étant donné que le contenu n’est pas directement lié aux écrans tactiles, les explications détaillées sont omises.
Figure 6 : Ajouter une texture.png à votre projet de contenu
Figure 7 : Image utilisée dans cet exemple
protected override void LoadContent()
{
// 新規の SpriteBatch を作成します。これはテクスチャーの描画に使用できます。
spriteBatch = new SpriteBatch(GraphicsDevice);
// テクスチャーをコンテンツパイプラインから読み込む
texture = Content.Load<Texture2D>("Texture");
}
Programme - Acquisition d’informations tactiles
Les informations tactiles sont récupérées dans la méthode Game.Update.
J’obtiens les informations tactiles en utilisant la classe « Mouse » au lieu d’une classe dédiée. Lorsque vous utilisez la méthode « Mouse.GetState », l’état actuel de la souris est renvoyé dans la structure « MouseState », de sorte que vous pouvez obtenir la position tactile à partir des propriétés « MouseState.X » et « 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);
}
Une chose à noter à propos de l’utilisation de la classe Mouse pour obtenir des informations tactiles est qu’elle ne renvoie que des informations simples. Les seules restrictions sur les informations qui peuvent être obtenues lors de l’utilisation de la classe Mouse sont « single touch only », « touch position (MouseState.X, MouseState.Y property) » et « s’il faut ou non toucher (MouseState.LeftButton) ». Il ne prend pas en charge le multi-touch ou les gestes. De plus, si vous obtenez une position alors que vous ne l’avez pas touchée, elle continuera à revenir à la position tactile précédente. Étant donné que les informations d’entrée ne peuvent pas être reçues à moins qu’elles ne soient touchées, les informations de localisation ne peuvent pas être acquises telles que le survol de la souris par la souris.
Programme - Dessin de textures
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
// スプライトの描画準備
spriteBatch.Begin();
// タッチしている位置にテクスチャーを描画
spriteBatch.Draw(texture, touchPosition, Color.White);
// スプライトの一括描画
spriteBatch.End();
base.Draw(gameTime);
}
Résumé de cet exemple
Étant donné que la classe Mouse remplace l’acquisition d’informations tactiles, les informations ne peuvent être obtenues qu’en obtenant la position tactile comme dans cet exemple. Inversement, si vous utilisez une classe tactile uniquement, vous pouvez obtenir plus d’informations.
Par conséquent, il n’est pas sans mérite d’obtenir des informations tactiles à l’aide de la classe Mouse. L’utilisation de la classe Mouse offre les avantages suivants :
- Peut partager du code avec des jeux compatibles avec la souris exécutés sous Windows
- Les informations de localisation tactile peuvent être écrites avec le moins de code possible
- Le traitement inutile peut être omis
Si vous n’utilisez qu’une seule touche et uniquement le positionnement tactile, vous pouvez tirer parti des avantages ci-dessus à l’aide de la classe Mouse.