Interakcija na dotik pri razvoju igre za windows Phone 7 Part 1 Osnove interakcije na dotik

Stran posodobljena :
Datum ustvarjanja strani :

Uvod v Windows Phone 7

Platforma za aplikacije za Windows Phone 7

Razvojno okolje za Windows Phone 7 je bilo uradno izdano septembra 2010, pametni telefoni, ki dejansko zaženejo Windows Phone 7, pa so začeli zadeti na trg.

図 1 :HTC から販売されている Windows Phone 7 を搭載した「HTC 7 Trophy」
Slika 1: HTC 7 Trofeja s sistemom Windows Phone 7, ki jo prodaja HTC

Ko ustvarite program, ki se izvaja v telefonu Windows Phone 7, lahko kot programski okvir izberete med »Silverlight« in »XNA Framework«. Na splošno boste uporabili »XNA Framework« za razvoj iger in »Silverlight« za druge aplikacije, kot so orodja.

Ta razdelek uporablja XNA Framework za razvoj iger in pojasnjuje, kako uporabljati ploščo na dotik, ki bo najbolj uporabljen uporabniški vmesnik za Windows Phone 7. Preprosta uporaba je opisana v pomoči XNA Game Studio, zato bi rad pojasnil na nekoliko bolj poglobljen način tukaj.

Pripravite svoje razvojno okolje

Ta razdelek je z vidika nekoga, ki se je celo rahlo dotaknil XNA Game Studio, zato bom izostavili podrobna navodila, kot sta namestitev in nastavitev. Obstaja veliko informacij v pomoči, ki prihaja z XNA Game Studio in na spletu, zato vas prosimo, da preverite sami. Imam tudi nekaj na moji spletni strani (http://sorceryforce.com/xna/).

図 2 :Microsoft Visual Studio 2010 Express for Windows Phone(Windows Phone Developer Tools に含まれます)
Slika 2: Microsoft Visual Studio 2010 Express za Windows Phone (vključeno v orodja za razvijalce za Windows Phone)

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

Programiranje! - 1. Preusmite informacije o dotiku

O tem vzorcu

Različica okvirja XNA, ki se uporablja v telefonu Windows Phone 7, je »4.0«, vendar do takrat ni bilo razredov za plošče na dotik, tipkovnice, miši in igralne ploščice pa so bile mainstream. Od 4.0 je windows Phone 7 podprt in dodan je nov razred, namenjen zaslonom na dotik.

V tem članku bomo predvsem razložili ta razred, v resnici pa, če želite dobiti preproste informacije o položaju na dotik, lahko zamenjate drug razred, ne da bi uporabili razred za plošče na dotik. To je "Mišji" razred. V tem vzorcu bomo s razredom Miška dobili informacije o dotiku.

Cilji tega vzorčne programa

Ko se dotaknete zaslona, se slika (sprite) postavi glede na položaj na dotik.

図 3,4 :タッチした位置にスプライトが表示される 図 3,4 :タッチした位置にスプライトが表示される
Slika 3,4: Spriti se pojavijo na dotikanih položajih

Program – deklariranje polj

Rad bi to takoj razložil skupaj z vzorčenim programom. Razlage delov, ki niso neposredno povezani z delovanjem na dotik in programi, ustvarjeni od začetka, so izotopljene, zato glejte izvorno kodo, porazdeljeno posebej.

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

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

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

  public Game1()
  {

Polje razglasi teksturo za risanje na mestu dotika in spremenljivko strukture Vektor2 za shranjevanje položaja na dotik.

Program – Nalaganje teksture

Teksture so že dodane v projekt vsebine in naložene z metodo LoadContent. Ker vsebina ni neposredno povezana z dotiknimi ploščami, so izotopljene podrobne razlage.

図 6 :コンテンツプロジェクトに「Texture.png」を追加しておく
Slika 6: Dodajanje tekstura.png v projekt vsebine

図 7 :今回サンプルで使用する画像
Slika 7: Slika, uporabljena v tem vzorcu

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

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

Program – Pridobitev informacij o dotiku

Informacije o dotiku so pridobljene v metodi Game.Update.

Informacije o dotiku dobivam z uporabo "Mouse" razreda namesto iz namenskega razreda. Ko uporabljate metodo »Mouse.GetState«, se trenutno stanje miške vrne v strukturi »MouseState«, tako da lahko na dotik pridete iz lastnosti »MouseState.X« in »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);
}

Ena stvar, ki jo je treba o tem, kako uporabljati razred miške, da bi dobili informacije o dotiku, je, da vrne le preproste informacije. Edina omejitev informacij, ki jih je mogoče pridobiti pri uporabi razreda miške, so »samo en dotik«, »položaj na dotik (MouseState.X, lastnost MouseState.Y)« in »ali se dotakniti (MouseState.LeftButton)«. Ne podpira več dotikov ali potez. Če se ga ne dotaknete, boste tudi v primeru, ko se ga niste dotaknili, še naprej vračal prejšnji položaj na dotik. Ker vhodnih informacij ni mogoče prejeti, razen če se jih dotaknete, podatkov o lokaciji ni mogoče pridobiti, kot je miška.

Program - Risba teksture

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

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

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

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

  base.Draw(gameTime);
}

Povzetek tega vzorca

Ker razred miške nadomešča pridobivanje informacij o dotiku, se informacije lahko pridobijo le z pridobijo položaja na dotik kot v tem vzorcu. Nasprotno, če uporabljate razred samo na dotik, lahko dobiš več informacij.

Zato ni brez zaslug, da bi dobili informacije o dotiku z uporabo miške razreda. Uporaba razreda miške zagotavlja naslednje prednosti:

  • Lahko delite kodo z igrami, ki so omogočene z miško, ki se izvajajo v sistemu Windows
  • Podatki o lokaciji dotika se lahko zapisajo z najmanjšo količino kode
  • Nepotrebna obdelava se lahko izostopi

Če uporabljate samo en dotik in samo pozicioniranje na dotik, lahko z uporabo razreda Miška izkoristite zgornje prednosti.