Lietimo sąveika kuriant žaidimus, skirtus "Windows Phone 7" 1 dalies lietimo sąveikai

Puslapis atnaujintas :
Puslapio sukūrimo data :

Darbo su "Windows Phone 7" pradžia

"Windows Phone 7" taikomųjų programų platforma

"Windows Phone 7" kūrimo aplinka buvo oficialiai išleista 2010 m. Rugsėjo mėn., O išmanieji telefonai, kuriuose iš tikrųjų veikia "Windows Phone 7", pradėjo patekti į rinką.

図 1 :HTC から販売されている Windows Phone 7 を搭載した「HTC 7 Trophy」
1 paveikslas: "HTC 7 Trophy" su "Windows Phone 7", kurį parduoda "HTC".

Kai kuriate programą, kuri veikia "Windows Phone 7", kaip programos sistemą galite pasirinkti "Silverlight" ir "XNA Framework". Apskritai žaidimų kūrimui naudosite "XNA Framework", o kitoms programoms, pvz., įrankiams, – "Silverlight".

Šiame skyriuje žaidimų kūrimui naudojama "XNA Framework" ir paaiškinama, kaip naudoti jutiklinį skydelį, kuris bus dažniausiai naudojama "Windows Phone 7" vartotojo sąsaja. Paprastas naudojimas aprašytas "XNA Game Studio" žinyne, todėl čia norėčiau tai paaiškinti šiek tiek išsamiau.

Paruoškite savo kūrimo aplinką

Šis skyrius yra iš žmogaus, kuris net šiek tiek palietė "XNA Game Studio", perspektyvos, todėl praleisiu išsamias instrukcijas, tokias kaip diegimas ir sąranka. Žinyne, kuris pateikiamas su "XNA Game Studio", ir žiniatinklyje yra daug informacijos, todėl patikrinkite ją patys. Aš taip pat turiu keletą savo svetainėje (http://sorceryforce.com/xna/).

図 2 :Microsoft Visual Studio 2010 Express for Windows Phone(Windows Phone Developer Tools に含まれます)
2 paveikslėlis: "Microsoft Visual Studio 2010 Express", skirta "Windows Phone" (įtraukta į "Windows Phone" kūrėjų įrankius)

図 3 :Windows Phone エミュレーター
3 paveikslas: "Windows Phone" emuliatorius

Programavimo! - 1. Gaukite lietimo informaciją

Apie šį pavyzdį

"Windows Phone 7" naudojama "XNA Framework" versija yra "4.0", tačiau iki tol nebuvo jutiklinių skydelių klasių, o klaviatūros, pelės ir žaidimų pultai buvo pagrindiniai. Nuo 4.0 versijos palaikoma "Windows Phone 7" ir pridėta nauja klasė, skirta jutikliniams skydeliams.

Šiame straipsnyje mes daugiausia paaiškinsime tą klasę, tačiau iš tikrųjų, jei norite gauti paprastą jutiklinės padėties informaciją, galite pakeisti kitą klasę nenaudodami jutiklinių skydelių klasės. Tai "Pelės" klasė. Šiame pavyzdyje naudosime pelės klasę, kad gautume jutiklinę informaciją.

Šios pavyzdinės programos tikslai

Kai paliečiate ekraną, vaizdas (sprite) dedamas pagal jutiklinę padėtį.

図 3,4 :タッチした位置にスプライトが表示される 図 3,4 :タッチした位置にスプライトが表示される
3,4 paveikslas: Spritai rodomi prisilietusiose padėtyse

Programa - laukų deklaravimas

Norėčiau tai iš karto paaiškinti kartu su pavyzdine programa. Praleidžiami dalių, kurios nėra tiesiogiai susijusios su jutikliniu veikimu, ir programų, sukurtų nuo pat pradžių, paaiškinimai, todėl žiūrėkite atskirai paskirstytą šaltinio kodą.

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

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

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

  public Game1()
  {

Laukas deklaruoja tekstūrą, kurią reikia piešti lietimo vietoje, ir Vector2 struktūros kintamąjį, kad būtų išsaugota lietimo padėtis.

Programa - Įkėlimo tekstūros

Tekstūros jau įtrauktos į turinio projektą ir įkeltos naudojant "LoadContent" metodą. Kadangi turinys nėra tiesiogiai susijęs su jutikliniais skydeliais, išsamūs paaiškinimai praleidžiami.

図 6 :コンテンツプロジェクトに「Texture.png」を追加しておく
6 paveikslėlis: .png Tekstūros įtraukimas į turinio projektą

図 7 :今回サンプルで使用する画像
7 paveikslas: Šiame pavyzdyje naudotas vaizdas

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

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

Programa - jutiklinės informacijos gavimas

Jutiklinė informacija gaunama Game.Update metodu.

Jutiklinę informaciją gaunu naudodamas "Pelės" klasę, o ne iš specialios klasės. Naudojant "Mouse.GetState" metodą, dabartinė pelės būsena grąžinama "MouseState" struktūroje, todėl jutiklinę padėtį galite gauti iš "MouseState.X" ir "MouseState.Y" ypatybių.

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);
}

Vienas dalykas, į kurį reikia atkreipti dėmesį naudojant pelės klasę norint gauti jutiklinę informaciją, yra tai, kad ji pateikia tik paprastą informaciją. Vieninteliai informacijos, kurią galima gauti naudojant pelės klasę, apribojimai yra "tik vienas palietimas", "jutiklinė padėtis (MouseState.X, MouseState.Y y. y. ypatybė)" ir "ar liesti, ar neliesti (MouseState.LeftButton)". Jis nepalaiko kelių palietimų ar gestų. Be to, jei gausite padėtį, kai jos nelietėte, ji ir toliau grąžins ankstesnę prisilietimo padėtį. Kadangi įvesties informacijos negalima gauti, jei ji nepaliečiama, vietos informacijos negalima gauti, pvz., pelės žymekliu.

Programa - piešimo tekstūros

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

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

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

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

  base.Draw(gameTime);
}

Šios imties santrauka

Kadangi pelės klasė pakeičia jutiklinės informacijos gavimą, informaciją galima gauti tik gavus jutiklinę padėtį, kaip ir šiame pavyzdyje. Ir atvirkščiai, jei naudojate tik jutiklinę klasę, galite gauti daugiau informacijos.

Todėl nėra be nuopelnų gauti jutiklinę informaciją naudojant pelės klasę. Pelės klasės naudojimas suteikia šiuos privalumus:

  • Gali bendrinti kodą su žaidimais, kuriuose įgalinta pelė, veikiančiais sistemoje "Windows"
  • Palieskite vietos informaciją galite parašyti naudodami mažiausiai kodo
  • Nereikalingas apdorojimas gali būti praleistas

Jei naudojate tik vieno palietimo ir tik jutiklinį padėties nustatymą, galite pasinaudoti aukščiau nurodytais pranašumais naudodami pelių klasę.