Kosketustoimintojen vuorovaikutus Windows Phone 7:n pelinkehityksessä Osa 1 Kosketusohjauksen perusteet

Sivu päivitetty :
Sivun luontipäivämäärä :

Windows Phone 7:n käytön aloittaminen

Windows Phone 7:n sovellusympäristö

Windows Phone 7 -kehitysympäristö julkaistiin virallisesti syyskuussa 2010, ja älypuhelimet, joissa todella on Windows Phone 7, ovat alkaneet tulla markkinoille.

図 1 :HTC から販売されている Windows Phone 7 を搭載した「HTC 7 Trophy」
Kuva 1: HTC myy HTC 7 Trophy ja Windows Phone 7

Kun luot sovelluksen, joka toimii Windows Phone 7:ssä, voit valita ohjelmakehykseksi "Silverlight" tai "XNA Framework". Yleensä käytät "XNA Frameworkia" pelin kehittämiseen ja "Silverlightia" muihin sovelluksiin, kuten työkaluihin.

Tässä osassa käytetään XNA-kehystä pelien kehittämiseen ja kerrotaan, miten käytetään kosketuspaneelia, joka on Windows Phone 7:n eniten käytetty käyttöliittymä. Yksinkertainen käyttö on kuvattu XNA Game Studion ohjeessa, joten haluaisin selittää sen hieman syvällisemmin täällä.

Valmistele kehitysympäristösi

Tämä osio on sellaisen henkilön näkökulmasta, joka on jopa hieman koskettanut XNA Game Studiota, joten jätän pois yksityiskohtaiset ohjeet, kuten asennuksen ja asennuksen. XNA Game Studion mukana tulevassa ohjeessa ja verkossa on paljon tietoa, joten tarkista se itse. Minulla on myös joitain sivustollani (http://sorceryforce.com/xna/).

図 2 :Microsoft Visual Studio 2010 Express for Windows Phone(Windows Phone Developer Tools に含まれます)
Kuva 2: Microsoft Visual Studio 2010 Express for Windows Phone (sisältyy Windows Phone Developer Toolsiin)

図 3 :Windows Phone エミュレーター
Kuva 3: Windows Phone -emulaattori

Ohjelmointi! - 1. Kosketustietojen hankkiminen

Tietoja tästä näytteestä

Windows Phone 7: ssä käytetty XNA-kehyksen versio on "4.0", mutta siihen asti kosketuspaneeleille ei ollut luokkia, ja näppäimistöt, hiiret ja peliohjaimet olivat valtavirtaa. Vuodesta 4.0 lähtien Windows Phone 7:ää on tuettu, ja uusi kosketuspaneeleille omistettu luokka on lisätty.

Tässä artikkelissa selitämme pääasiassa kyseisen luokan, mutta itse asiassa, jos haluat saada yksinkertaisia kosketussijaintitietoja, voit korvata toisen luokan käyttämättä luokkaa kosketuspaneeleille. Se on "Hiiri" -luokka. Tässä esimerkissä käytämme Hiiri-luokkaa kosketustietojen saamiseksi.

Tämän esimerkkiohjelman tavoitteet

Kun kosketat näyttöä, kuva (sprite) sijoitetaan kosketusasennon mukaan.

図 3,4 :タッチした位置にスプライトが表示される 図 3,4 :タッチした位置にスプライトが表示される
Kuva 3,4: Spritet näkyvät kosketetuissa kohdissa

Ohjelma - Kenttien ilmoittaminen

Haluaisin selittää sen yhdessä näyteohjelman kanssa heti. Selitykset osista, jotka eivät liity suoraan kosketustoimintaan, ja alusta alkaen luodut ohjelmat jätetään pois, joten katso erikseen jaettu lähdekoodi.

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

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

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

  public Game1()
  {

Kenttä määrittää pintakuvion, joka piirretään kosketussijaintiin, ja Vector2-rakennemuuttujan, joka tallentaa kosketussijainnin.

Ohjelma - Tekstuurien lataaminen

Pintakuviot on jo lisätty sisältöprojektiin ja ladattu LoadContent-menetelmällä. Koska sisältö ei liity suoraan kosketuspaneeleihin, yksityiskohtaiset selitykset jätetään pois.

図 6 :コンテンツプロジェクトに「Texture.png」を追加しておく
Kuva 6: .png Tekstuurin lisääminen sisältöprojektiin

図 7 :今回サンプルで使用する画像
Kuva 7: Tässä esimerkissä käytetty kuva

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

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

Ohjelma - Kosketustietojen hankinta

Kosketustiedot noudetaan Game.Update-menetelmällä.

Saan kosketustiedot käyttämällä "Hiiri"-luokkaa sen sijaan, että olisin käyttänyt omaa luokkaa. Kun käytät "Mouse.GetState"-menetelmää, hiiren nykyinen tila palautetaan "MouseState"-rakenteeseen, joten saat kosketussijainnin ominaisuuksista "MouseState.X" ja "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);
}

Yksi huomioitava asia Hiiri-luokan käyttämisessä kosketustietojen saamiseksi on, että se palauttaa vain yksinkertaisia tietoja. Ainoat rajoitukset tiedoille, jotka voidaan saada Hiiri-luokkaa käytettäessä, ovat "vain yksi kosketus", "kosketussijainti (MouseState.X, MouseState.Y-ominaisuus)" ja "kosketetaanko (MouseState.LeftButton)" vai ei. Se ei tue monikosketusta tai eleitä. Lisäksi, jos saat sijainnin, kun et ole koskenut siihen, se palauttaa edelleen edellisen kosketusasennon. Koska syöttötietoja ei voida vastaanottaa, ellei niihin kosketa, sijaintitietoja ei voida hankkia, kuten hiiren osoitinta hiirellä.

Ohjelma - Tekstuurien piirtäminen

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

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

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

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

  base.Draw(gameTime);
}

Yhteenveto tästä näytteestä

Koska Hiiri-luokka korvaa kosketustietojen hankinnan, tietoja voidaan saada vain hankkimalla kosketusasento, kuten tässä näytteessä. Toisaalta, jos käytät vain kosketusta sisältävää luokkaa, voit saada lisätietoja.

Siksi ei ole ansiotonta saada kosketustietoja Hiiri-luokan avulla. Hiiri-luokan käyttäminen tarjoaa seuraavat edut:

  • Voi jakaa koodia Windowsissa käynnissä olevien hiirtä käyttävien pelien kanssa
  • Kosketussijaintitiedot voidaan kirjoittaa pienimmällä määrällä koodia
  • Tarpeeton käsittely voidaan jättää pois

Jos käytät vain yhtä kosketusta ja vain kosketussijoittelua, voit hyödyntää yllä olevia etuja käyttämällä Hiiri-luokkaa.