Interacțiunea tactilă în dezvoltarea jocurilor pentru Windows Phone 7 Partea 1 Noțiuni de bază despre interacțiunea tactilă

Pagina actualizată :
Data creării paginii :

Introducere în Windows Phone 7

Platforma de aplicații Windows Phone 7

Mediul de dezvoltare Windows Phone 7 a fost lansat oficial în septembrie 2010, iar smartphone-urile care rulează de fapt Windows Phone 7 au început să ajungă pe piață.

図 1 :HTC から販売されている Windows Phone 7 を搭載した「HTC 7 Trophy」
Figura 1: HTC 7 Trophy cu Windows Phone 7 vândut de HTC

Atunci când creați o aplicație care se execută pe Windows Phone 7, puteți alege între "Silverlight" și "XNA Framework" ca cadru de program. În general, veți utiliza "XNA Framework" pentru dezvoltarea jocului și "Silverlight" pentru alte aplicații, cum ar fi instrumente.

Această secțiune utilizează cadrul XNA pentru dezvoltarea jocurilor și explică modul de utilizare a panoului tactil, care va fi cea mai utilizată interfață de utilizator pentru Windows Phone 7. Utilizarea simplă este descrisă în ajutorul XNA Game Studio, așa că aș dori să o explic într-un mod puțin mai detaliat aici.

Pregătiți-vă mediul de dezvoltare

Această secțiune este din perspectiva cuiva care a atins chiar și ușor XNA Game Studio, așa că voi omite instrucțiuni detaliate, cum ar fi instalarea și configurarea. Există o mulțime de informații în ajutorul care vine cu XNA Game Studio și pe web, așa că vă rugăm să verificați singur. Am, de asemenea, unele pe site-ul meu (http://sorceryforce.com/xna/).

図 2 :Microsoft Visual Studio 2010 Express for Windows Phone(Windows Phone Developer Tools に含まれます)
Figura 2: Microsoft Visual Studio 2010 Express pentru Windows Phone (inclus în Windows Phone Developer Tools)

図 3 :Windows Phone エミュレーター
Figura 3: Emulator windows phone

Programare! - 1. Obțineți informații tactile

Despre acest eșantion

Versiunea XNA Framework utilizată în Windows Phone 7 este "4.0", dar până atunci nu existau clase pentru panouri tactile, iar tastaturile, șoarecii și gamepad-urile erau mainstream. De la 4.0, Windows Phone 7 a fost acceptat și a fost adăugată o nouă clasă dedicată panourilor tactile.

În acest articol, vom explica în principal acea clasă, dar, de fapt, dacă doriți să obțineți informații simple despre poziția tactilă, puteți înlocui o altă clasă fără a utiliza o clasă pentru panouri tactile. Este clasa "Mouse". În acest eșantion, vom folosi clasa mouse-ului pentru a obține informații tactile.

Obiectivele acestui program de probă

Când atingeți ecranul, imaginea (sprite) este plasată în funcție de poziția tactilă.

図 3,4 :タッチした位置にスプライトが表示される 図 3,4 :タッチした位置にスプライトが表示される
Figura 3,4: Spritele apar în poziții atinse

Program - Declararea domeniilor

Aș dori să-l explice, împreună cu programul de probă imediat. Explicațiile pieselor care nu sunt direct legate de operarea tactilă și programele create de la început sunt omise, așa că vă rugăm să consultați codul sursă distribuit separat.

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

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

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

  public Game1()
  {

Câmpul declară o textură de desenat în locația tactilă și o variabilă de structură Vector2 pentru a stoca poziția tactilă.

Program - Încărcarea texturilor

Texturile sunt deja adăugate la proiectul de conținut și încărcate cu metoda LoadContent. Deoarece conținutul nu este direct legat de panourile tactile, explicațiile detaliate sunt omise.

図 6 :コンテンツプロジェクトに「Texture.png」を追加しておく
Figura 6: Adăugarea unei texturi.png la proiectul de conținut

図 7 :今回サンプルで使用する画像
Figura 7: Imaginea utilizată în acest eșantion

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

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

Program - Achizitia de informatii tactile

Informațiile tactile sunt regăsite în metoda Game.Update.

Primesc informații tactile folosind clasa "Mouse" în loc de dintr-o clasă dedicată. Atunci când utilizați metoda "Mouse.GetState", starea curentă a mouse-ului este returnată în structura "MouseState", astfel încât să puteți obține poziția tactilă din proprietățile "MouseState.X" și "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);
}

Un lucru de reținut despre utilizarea clasei mouse-ului pentru a obține informații tactile este că returnează doar informații simple. Singurele restricții privind informațiile care pot fi obținute atunci când se utilizează clasa mouse-ului sunt "numai o singură atingere", "poziția tactilă (mouseState.X, proprietatea MouseState.Y)" și "dacă să atingeți sau nu (MouseState.LeftButton)". Nu acceptă multi-touch sau gesturi. De asemenea, dacă obțineți o poziție atunci când nu ați atins-o, aceasta va continua să returneze poziția tactilă anterioară. Deoarece informațiile de intrare nu pot fi primite decât dacă sunt atinse, informațiile despre locație nu pot fi obținute, cum ar fi mouseover-ul cu mouse-ul.

Program - Desen texturi

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

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

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

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

  base.Draw(gameTime);
}

Rezumatul acestui eșantion

Deoarece clasa mouse-ului înlocuiește achiziționarea de informații tactile, informațiile pot fi obținute numai prin obținerea poziției tactile ca în acest eșantion. În schimb, dacă utilizați o clasă doar tactilă, puteți obține mai multe informații.

Prin urmare, nu este lipsit de merit pentru a obține informații tactile folosind clasa mouse-ului. Utilizarea clasei Mouse oferă următoarele beneficii:

  • Poate partaja cod cu jocurile cu mouse-ul activat care rulează pe Windows
  • Informațiile despre locația tactilă pot fi scrise cu cea mai mică cantitate de cod
  • Prelucrarea inutilă poate fi omisă

Dacă utilizați doar o singură atingere și doar poziționarea la atingere, puteți profita de beneficiile de mai sus utilizând clasa mouse-ului.