Berøringsinteraktion i spiludvikling til Windows Phone 7 Del 1 Grundlæggende om berøringsinteraktion

Side opdateret :
Dato for oprettelse af side :

Introduktion til Windows Phone 7

Windows Phone 7-programplatform

Windows Phone 7-udviklingsmiljøet blev officielt udgivet i september 2010, og smartphones, der faktisk kører Windows Phone 7, er begyndt at komme på markedet.

図 1 :HTC から販売されている Windows Phone 7 を搭載した「HTC 7 Trophy」
Figur 1: HTC 7 Trophy med Windows Phone 7 solgt af HTC

Når du opretter et program, der kører på Windows Phone 7, kan du vælge mellem "Silverlight" og "XNA Framework" som programramme. Generelt vil du bruge "XNA Framework" til spiludvikling og "Silverlight" til andre applikationer såsom værktøjer.

Dette afsnit bruger XNA Framework til spiludvikling og forklarer, hvordan du bruger berøringspanelet, som vil være den mest anvendte brugergrænseflade til Windows Phone 7. Den enkle brug er beskrevet i XNA Game Studio-hjælpen, så jeg vil gerne forklare det på en lidt mere dybtgående måde her.

Forbered dit udviklingsmiljø

Dette afsnit er fra perspektivet af en person, der endda har rørt XNA Game Studio lidt, så jeg vil udelade detaljerede instruktioner såsom installation og opsætning. Der er mange oplysninger i den hjælp, der følger med XNA Game Studio og på nettet, så tjek det selv. Jeg har også nogle på mit websted (http://sorceryforce.com/xna/).

図 2 :Microsoft Visual Studio 2010 Express for Windows Phone(Windows Phone Developer Tools に含まれます)
Figur 2: Microsoft Visual Studio 2010 Express til Windows Phone (inkluderet i Windows Phone Developer Tools)

図 3 :Windows Phone エミュレーター
Figur 3: Windows Phone-emulator

Programmering! - 1. Få oplysninger om berøring

Om denne prøve

Den version af XNA Framework, der bruges i Windows Phone 7, er "4.0", men indtil da var der ingen klasser for berøringspaneler, og tastaturer, mus og gamepads var mainstream. Siden 4.0 er Windows Phone 7 blevet understøttet, og en ny klasse dedikeret til berøringspaneler er blevet tilføjet.

I denne artikel vil vi hovedsageligt forklare den klasse, men faktisk, hvis du vil have enkle berøringspositionsoplysninger, kan du erstatte en anden klasse uden at bruge en klasse til berøringspaneler. Det er "Mus" klassen. I dette eksempel bruger vi klassen Mus til at få berøringsoplysninger.

Mål for dette prøveprogram

Når du rører ved skærmen, placeres billedet (sprite) i henhold til berøringspositionen.

図 3,4 :タッチした位置にスプライトが表示される 図 3,4 :タッチした位置にスプライトが表示される
Figur 3,4: Sprites vises på berørte positioner

Program - Erklæring af felter

Jeg vil gerne forklare det sammen med prøveprogrammet med det samme. Forklaringer på dele, der ikke er direkte relateret til berøringsbetjening og programmer, der er oprettet fra begyndelsen, udelades, så se kildekoden, der distribueres separat.

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

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

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

  public Game1()
  {

Feltet erklærer en tekstur, der skal tegnes på berøringsstedet, og en Vector2-strukturvariabel til at gemme berøringspositionen.

Program - Indlæsning af teksturer

Teksturer er allerede føjet til indholdsprojektet og indlæst med LoadContent-metoden. Da indholdet ikke er direkte relateret til berøringspaneler, udelades detaljerede forklaringer.

図 6 :コンテンツプロジェクトに「Texture.png」を追加しておく
Figur 6: Føje en tekstur.png til dit indholdsprojekt

図 7 :今回サンプルで使用する画像
Figur 7: Billede brugt i dette eksempel

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

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

Program - Indsamling af oplysninger ved berøring

Berøringsoplysningerne hentes i Game.Update-metoden.

Jeg får berøringsoplysningerne ved hjælp af klassen "Mus" i stedet for fra en dedikeret klasse. Når du bruger metoden "Mouse.GetState", returneres den aktuelle musetilstand i "MouseState" -strukturen, så du kan få berøringspositionen fra egenskaberne "MouseState.X" og "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);
}

En ting at bemærke om at bruge musklassen til at få berøringsoplysninger er, at den kun returnerer enkle oplysninger. De eneste begrænsninger for oplysninger, der kan fås ved brug af museklassen, er "kun enkelt berøring", "berøringsposition (MouseState.X, MouseState.Y-egenskab)" og "om du skal røre ved (MouseState.LeftButton)". Det understøtter ikke multi-touch eller bevægelser. Hvis du får en position, når du ikke har rørt den, vil den også fortsætte med at returnere den forrige berøringsposition. Da inputoplysninger ikke kan modtages, medmindre de berøres, kan placeringsoplysninger ikke erhverves, såsom mouseover med mus.

Program - Tegning af teksturer

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

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

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

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

  base.Draw(gameTime);
}

Resumé af denne prøve

Da musklassen erstatter erhvervelsen af berøringsoplysninger, kan information kun opnås ved at opnå berøringspositionen som i denne prøve. Omvendt, hvis du bruger en touch-only klasse, kan du få flere oplysninger.

Derfor er det ikke uden fortjeneste at få berøringsoplysninger ved hjælp af musklassen. Brug af mus-klassen giver følgende fordele:

  • Kan dele kode med museaktiverede spil, der kører på Windows
  • Berøringsplaceringsoplysninger kan skrives med mindst mulig kode
  • Unødvendig behandling kan udelades

Hvis du kun bruger enkelt berøring og kun berøringspositionering, kan du drage fordel af ovenstående fordele ved at bruge musklassen.