Interaction tactile dans le développement de jeux pour Windows Phone 7 Partie 1 Principes de base de l’interaction tactile

Page mise à jour :
Date de création de la page :

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é.

図 1 :HTC から販売されている Windows Phone 7 を搭載した「HTC 7 Trophy」
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/).

図 2 :Microsoft Visual Studio 2010 Express for Windows Phone(Windows Phone Developer Tools に含まれます)
Figure 2 : Microsoft Visual Studio 2010 Express pour Windows Phone (inclus dans les outils de développement Windows Phone)

図 3 :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.

図 3,4 :タッチした位置にスプライトが表示される 図 3,4 :タッチした位置にスプライトが表示される
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.

図 6 :コンテンツプロジェクトに「Texture.png」を追加しておく
Figure 6 : Ajouter une texture.png à votre projet de contenu

図 7 :今回サンプルで使用する画像
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.