Basisbeginselen van aanraakinteractie bij gameontwikkeling voor Windows Phone 7 Deel 1 Basisbeginselen van aanraakinteractie

Pagina bijgewerkt :
Aanmaakdatum van pagina :

Aan de slag met Windows Phone 7

Windows Phone 7-toepassingsplatform

De Ontwikkelomgeving van Windows Phone 7 werd officieel uitgebracht in september 2010 en smartphones met Windows Phone 7 zijn op de markt gekomen.

図 1 :HTC から販売されている Windows Phone 7 を搭載した「HTC 7 Trophy」
Figuur 1: HTC 7 Trophy met Windows Phone 7 verkocht door HTC

Wanneer u een toepassing maakt die wordt uitgevoerd op Windows Phone 7, kunt u kiezen tussen "Silverlight" en "XNA Framework" als het programmaframework. Over het algemeen gebruikt u "XNA Framework" voor game-ontwikkeling en "Silverlight" voor andere toepassingen zoals tools.

In deze sectie wordt het XNA Framework gebruikt voor het ontwikkelen van games en wordt uitgelegd hoe u het aanraakscherm gebruikt, de meest gebruikte gebruikersinterface voor Windows Phone 7. Het eenvoudige gebruik wordt beschreven in de XNA Game Studio help, dus ik wil het hier op een iets diepere manier uitleggen.

Bereid uw ontwikkelomgeving voor

Dit gedeelte is vanuit het perspectief van iemand die XNA Game Studio zelfs maar een beetje heeft aangeraakt, dus ik zal gedetailleerde instructies zoals installatie en installatie weglaten. Er is veel informatie in de help die wordt geleverd met XNA Game Studio en op het web, dus bekijk het zelf. Ik heb er ook een aantal op mijn site (http://sorceryforce.com/xna/).

図 2 :Microsoft Visual Studio 2010 Express for Windows Phone(Windows Phone Developer Tools に含まれます)
Afbeelding 2: Microsoft Visual Studio 2010 Express voor Windows Phone (opgenomen in Windows Phone Developer Tools)

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

Programmeren! - 1. Touch-informatie opvragen

Over dit voorbeeld

De versie van het XNA Framework die in Windows Phone 7 wordt gebruikt, is "4.0", maar tot dan toe waren er geen klassen voor aanraakpanelen en waren toetsenborden, muizen en gamepads de mainstream. Sinds 4.0 wordt Windows Phone 7 ondersteund en is er een nieuwe klasse voor aanraakschermen toegevoegd.

In dit artikel zullen we die klasse voornamelijk uitleggen, maar in feite, als u eenvoudige aanraakpositie-informatie wilt krijgen, kunt u een andere klasse vervangen zonder een klasse te gebruiken voor aanraakpanelen. Het is de klasse "Muis". In dit voorbeeld gebruiken we de klasse Mouse om aanraakinformatie op te halen.

Doelen van dit voorbeeldprogramma

Wanneer u het scherm aanraakt, wordt de afbeelding (sprite) geplaatst op basis van de aanraakpositie.

図 3,4 :タッチした位置にスプライトが表示される 図 3,4 :タッチした位置にスプライトが表示される
Figuur 3,4: Sprites verschijnen op aangeraakte posities

Programma - Velden declareren

Ik wil het graag meteen samen met het voorbeeldprogramma uitleggen. Uitleg over onderdelen die niet direct verband houden met aanraakbediening en programma's die vanaf het begin zijn gemaakt, worden weggelaten, dus raadpleeg de broncode die afzonderlijk wordt gedistribueerd.

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

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

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

  public Game1()
  {

Het veld declareert een textuur die moet worden getekend op de aanraaklocatie en een Vector2-structuurvariabele om de aanraakpositie op te slaan.

Programma - Texturen laden

Texturen zijn al toegevoegd aan het inhoudsproject en geladen met de methode LoadContent. Omdat de inhoud niet direct gerelateerd is aan aanraakpanelen, worden gedetailleerde uitleg weggelaten.

図 6 :コンテンツプロジェクトに「Texture.png」を追加しておく
Afbeelding 6: Een structuur.png toevoegen aan uw inhoudsproject

図 7 :今回サンプルで使用する画像
Figuur 7: Afbeelding gebruikt in dit voorbeeld

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

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

Programma - Touch Information Acquisition

De aanraakgegevens worden opgehaald in de methode Game.Update.

Ik krijg de aanraakinformatie met behulp van de klasse "Muis" in plaats van van een speciale klas. Wanneer u de methode "Mouse.GetState" gebruikt, wordt de huidige muisstatus geretourneerd in de structuur "MouseState", zodat u de aanraakpositie kunt krijgen van de eigenschappen "MouseState.X" en "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);
}

Een ding om op te merken over het gebruik van de klasse Mouse om aanraakinformatie te krijgen, is dat deze alleen eenvoudige informatie retourneert. De enige beperkingen op informatie die kan worden verkregen bij het gebruik van de klasse Mouse zijn "single touch only", "touch position (MouseState.X, MouseState.Y property)" en "al dan niet aanraken (MouseState.LeftButton)". Het ondersteunt geen multi-touch of gebaren. Als u een positie krijgt wanneer u deze niet hebt aangeraakt, blijft deze de vorige aanraakpositie retourneren. Aangezien invoerinformatie niet kan worden ontvangen tenzij deze wordt aangeraakt, kan locatie-informatie niet worden verkregen, zoals mouseover met de muis.

Programma - Drawing Textures

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

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

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

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

  base.Draw(gameTime);
}

Samenvatting van deze steekproef

Aangezien de klasse Mouse de verwerving van aanraakinformatie vervangt, kan informatie alleen worden verkregen door de aanraakpositie te verkrijgen zoals in dit voorbeeld. Omgekeerd, als u een klasse met alleen aanraking gebruikt, kunt u meer informatie krijgen.

Daarom is het niet zonder verdienste om aanraakinformatie te krijgen met behulp van de klasse Mouse. Het gebruik van de klasse Mouse biedt de volgende voordelen:

  • Kan code delen met muisspellen die op Windows worden uitgevoerd
  • Aanraaklocatiegegevens kunnen worden geschreven met de minste hoeveelheid code
  • Onnodige verwerking kan worden weggelaten

Als u alleen single touch en alleen touch positioning gebruikt, kunt u profiteren van de bovenstaande voordelen door de klasse Mouse te gebruiken.