Touchinteraktion in der Spieleentwicklung für Windows Phone 7 Teil 1 Grundlagen der Touchinteraktion

Diese Seite wurde aktualisiert :
Erstellungsdatum der Seite :

Erste Schritte mit Windows Phone 7

Windows Phone 7-Anwendungsplattform

Die Windows Phone 7-Entwicklungsumgebung wurde offiziell im September 2010 veröffentlicht, und Smartphones, auf denen Windows Phone 7 ausgeführt wird, sind auf den Markt gekommen.

図 1 :HTC から販売されている Windows Phone 7 を搭載した「HTC 7 Trophy」
Abbildung 1: HTC 7 Trophy mit Windows Phone 7, verkauft von HTC

Wenn Sie eine Anwendung erstellen, die unter Windows Phone 7 ausgeführt wird, können Sie zwischen "Silverlight" und "XNA Framework" als Programmframework wählen. Im Allgemeinen verwenden Sie "XNA Framework" für die Spieleentwicklung und "Silverlight" für andere Anwendungen wie Tools.

In diesem Abschnitt wird das XNA Framework für die Spieleentwicklung verwendet und die Verwendung des Touchpanels erläutert, das die am häufigsten verwendete Benutzeroberfläche für Windows Phone 7 sein wird. Die einfache Bedienung ist in der XNA Game Studio Hilfe beschrieben, daher möchte ich sie hier etwas ausführlicher erklären.

Vorbereiten der Entwicklungsumgebung

Dieser Abschnitt ist aus der Perspektive von jemandem, der XNA Game Studio auch nur leicht berührt hat, daher werde ich detaillierte Anweisungen wie Installation und Einrichtung weglassen. Es gibt viele Informationen in der Hilfe, die mit XNA Game Studio und im Internet geliefert wird, also überprüfen Sie es bitte selbst. Ich habe auch einige auf meiner Website (http://sorceryforce.com/xna/).

図 2 :Microsoft Visual Studio 2010 Express for Windows Phone(Windows Phone Developer Tools に含まれます)
Abbildung 2: Microsoft Visual Studio 2010 Express für Windows Phone (in den Windows Phone-Entwicklertools enthalten)

図 3 :Windows Phone エミュレーター
Abbildung 3: Windows Phone-Emulator

Programmieren! - 1. Abrufen von Touch-Informationen

Informationen zu diesem Beispiel

Die Version des XNA Framework, die in Windows Phone 7 verwendet wird, ist "4.0", aber bis dahin gab es keine Klassen für Touchpanels, und Tastaturen, Mäuse und Gamepads waren der Mainstream. Seit 4.0 wird Windows Phone 7 unterstützt, und eine neue Klasse für Touchpanels wurde hinzugefügt.

In diesem Artikel werden wir hauptsächlich diese Klasse erklären, aber wenn Sie einfache Informationen zur Touch-Position erhalten möchten, können Sie eine andere Klasse ersetzen, ohne eine Klasse für Touchpanels zu verwenden. Es ist die "Maus" -Klasse. In diesem Beispiel verwenden wir die Mouse-Klasse zum Abrufen von Fingereingabeinformationen.

Ziele dieses Beispielprogramms

Wenn Sie den Bildschirm berühren, wird das Bild (Sprite) entsprechend der Touch-Position platziert.

図 3,4 :タッチした位置にスプライトが表示される 図 3,4 :タッチした位置にスプライトが表示される
Abbildung 3,4: Sprites erscheinen an berührten Positionen

Programm - Deklarieren von Feldern

Ich möchte es gleich zusammen mit dem Beispielprogramm erklären. Erläuterungen zu Teilen, die nicht direkt mit der Touch-Bedienung zu tun haben, und von Anfang an erstellten Programmen entfallen, beachten Sie daher bitte den separat verteilten Quellcode.

public class Game1 : Microsoft.Xna.Framework.Game
{
  GraphicsDeviceManager graphics;
  SpriteBatch spriteBatch;

  /// <summary>
  /// テクスチャー
  /// </summary>
  Texture2D texture;

  /// <summary>
  /// タッチしている位置
  /// </summary>
  Vector2 touchPosition;

  public Game1()
  {

Das Feld deklariert eine Textur, die an der Touchposition gezeichnet werden soll, und eine Vector2-Strukturvariable zum Speichern der Touchposition.

Programm - Texturen laden

Texturen wurden dem Inhaltsprojekt bereits hinzugefügt und mit der LoadContent-Methode geladen. Da die Inhalte nicht direkt mit Touchpanels zu tun haben, entfallen detaillierte Erklärungen.

図 6 :コンテンツプロジェクトに「Texture.png」を追加しておく
Abbildung 6: Hinzufügen einer Textur.png zum Inhaltsprojekt

図 7 :今回サンプルで使用する画像
Abbildung 7: In diesem Beispiel verwendetes Bild

protected override void LoadContent()
{
  // 新規の SpriteBatch を作成します。これはテクスチャーの描画に使用できます。
  spriteBatch = new SpriteBatch(GraphicsDevice);

  // テクスチャーをコンテンツパイプラインから読み込む
  texture = Content.Load<Texture2D>("Texture");
}

Programm - Touch Information Acquisition

Die Fingereingabeinformationen werden in der Game.Update-Methode abgerufen.

Ich erhalte die Touch-Informationen mit der Klasse "Mouse" anstelle einer dedizierten Klasse. Wenn Sie die Methode "Mouse.GetState" verwenden, wird der aktuelle Mauszustand in der Struktur "MouseState" zurückgegeben, sodass Sie die Touchposition aus den Eigenschaften "MouseState.X" und "MouseState.Y" abrufen können.

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);
}

Eine Sache, die bei der Verwendung der Mouse-Klasse zum Abrufen von Fingereingabeinformationen zu beachten ist, ist, dass sie nur einfache Informationen zurückgibt. Die einzigen Einschränkungen für Informationen, die bei Verwendung der Mouse-Klasse abgerufen werden können, sind "nur einfache Berührung", "Fingereingabeposition (MouseState.X, MouseState.Y-Eigenschaft)" und "ob berührt werden soll (MouseState.LeftButton)". Multi-Touch oder Gesten werden nicht unterstützt. Wenn Sie eine Position erhalten, wenn Sie sie nicht berührt haben, wird weiterhin die vorherige Touch-Position zurückgegeben. Da Eingabeinformationen nur empfangen werden können, wenn sie berührt werden, können Standortinformationen nicht erfasst werden, z. B. Mouseover per Maus.

Programm - Texturen zeichnen

protected override void Draw(GameTime gameTime)
{
  GraphicsDevice.Clear(Color.CornflowerBlue);

  // スプライトの描画準備
  spriteBatch.Begin();

  // タッチしている位置にテクスチャーを描画
  spriteBatch.Draw(texture, touchPosition, Color.White);

  // スプライトの一括描画
  spriteBatch.End();

  base.Draw(gameTime);
}

Zusammenfassung dieses Beispiels

Da die Mouse-Klasse die Erfassung von Fingereingabeinformationen ersetzt, können Informationen nur durch Abrufen der Fingereingabeposition wie in diesem Beispiel abgerufen werden. Wenn Sie umgekehrt eine Nur-Touch-Klasse verwenden, können Sie weitere Informationen abrufen.

Daher ist es nicht ohne Verdienst, Fingereingabeinformationen mit der Mausklasse abzurufen. Die Verwendung der Mouse-Klasse bietet die folgenden Vorteile:

  • Kann Code für mausfähige Spiele freigeben, die unter Windows ausgeführt werden
  • Informationen zum Touch-Standort können mit der geringsten Menge an Code geschrieben werden
  • Unnötige Verarbeitung kann entfallen

Wenn Sie nur Single Touch und nur Touch-Positionierung verwenden, können Sie die oben genannten Vorteile nutzen, indem Sie die Mouse-Klasse verwenden.