Lietimo sąveika kuriant žaidimus, skirtus "Windows Phone 7" 1 dalies lietimo sąveikai
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 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/).
- "Windows Phone" kūrėjų įrankiai
- "Zune" programinė įranga
- Tikras įrenginys, kuriame veikia "Windows Phone 7" arba "Windows 7" kelių lietimų aplinka
- "Windows Phone" kūrėjų registracijos programa
2 paveikslėlis: "Microsoft Visual Studio 2010 Express", skirta "Windows Phone" (įtraukta į "Windows Phone" kūrėjų įrankius)
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 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 paveikslėlis: .png Tekstūros įtraukimas į turinio projektą
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ę.