Puutesisestus Windows Phone 7 mänguarenduses, 1. osa Puutesisestuse põhitõed
Windows Phone 7 kasutamise alustamine
Windows Phone 7 rakenduste platvorm
Windows Phone 7 arenduskeskkond ilmus ametlikult 2010. aasta septembris ja nutitelefonid, mis tegelikult kasutavad Windows Phone 7, on hakanud turule jõudma.
Joonis 1: HTC 7 trofee koos Windows Phone 7-ga, mida müüb HTC
Kui loote rakenduse, mis töötab Windows Phone 7-s, saate programmi raamistikuna valida "Silverlight" ja "XNA Framework" vahel. Üldiselt kasutate "XNA Framework" mängude arendamiseks ja "Silverlight" muudeks rakendusteks, näiteks tööriistadeks.
Selles jaotises kasutatakse XNA raamistikku mängude arendamiseks ja selgitatakse, kuidas kasutada puutepaneeli, mis on Windows Phone 7 kõige enam kasutatav kasutajaliides. Lihtsat kasutamist on kirjeldatud XNA Game Studio abis, nii et tahaksin seda siin veidi põhjalikumalt selgitada.
Valmistage ette oma arenduskeskkond
See jaotis on kellegi vaatenurgast, kes on XNA Game Studiot isegi veidi puudutanud, nii et jätan välja üksikasjalikud juhised, nagu installimine ja seadistamine. XNA Game Studio ja veebi spikris on palju teavet, nii et palun kontrollige seda ise. Mul on mõned ka oma saidil (http://sorceryforce.com/xna/).
- Windows Phone'i arendaja tööriistad
- Zune'i tarkvara
- Reaalne seade, milles töötab Windows Phone 7 või Windows 7 mitmikpuutekeskkond
- Windows Phone'i arendaja registreerimise rakendus
Joonis 2: Microsoft Visual Studio 2010 Express Windows Phone'i jaoks (sisaldub Windows Phone Developer Toolsis)
Joonis 3: Windows Phone'i emulaator
Programmeerimine! - 1. Hankige puuteteavet
Selle proovi kohta
Windows Phone 7-s kasutatava XNA raamistiku versioon on "4.0", kuid seni ei olnud puutepaneelide klasse ning klaviatuurid, hiired ja gamepad olid peavool. Alates 4.0-st on toetatud Windows Phone 7 ja lisatud on uus puutepaneelidele pühendatud klass.
Selles artiklis selgitame peamiselt seda klassi, kuid tegelikult, kui soovite saada lihtsat puutetundliku positsiooni teavet, võite asendada teise klassi ilma puutepaneelide klassi kasutamata. See on "Hiire" klass. Selles proovis kasutame puuteteabe saamiseks hiireklassi.
Selle näidisprogrammi eesmärgid
Kui puudutate ekraani, asetatakse pilt (sprait) vastavalt puutetundlikule asendile.
Joonis 3,4: Spraidid ilmuvad puudutatud kohtadesse
Programm - väljade deklareerimine
Tahaksin seda kohe koos näidisprogrammiga selgitada. Selgitused osade kohta, mis ei ole otseselt seotud puuteoperatsiooniga, ja algusest peale loodud programmid jäetakse välja, seega vaadake eraldi levitatavat lähtekoodi.
public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
<summary>
テクスチャー
</summary>
Texture2D texture;
<summary>
タッチしている位置
</summary>
Vector2 touchPosition;
public Game1()
{
Väli deklareerib puutepunktis joonistatava tekstuuri ja puuteasendi salvestamiseks struktuurimuutuja Vector2.
Programm - tekstuuride laadimine
Tekstuurid on juba sisuprojekti lisatud ja laaditud LoadContent meetodiga. Kuna sisu ei ole otseselt seotud puutepaneelidega, jäetakse üksikasjalikud selgitused välja.
Joonis 6: tekstuuri lisamine sisuprojektile .png
Joonis 7: Selles valimis kasutatud pilt
protected override void LoadContent()
{
// 新規の SpriteBatch を作成します。これはテクスチャーの描画に使用できます。
spriteBatch = new SpriteBatch(GraphicsDevice);
// テクスチャーをコンテンツパイプラインから読み込む
texture = Content.Load<Texture2D>("Texture");
}
Programm - puutetundliku teabe hankimine
Puuteteave tuuakse Game.Update meetodist.
Puutetundliku teabe saan "Hiire" klassi, mitte spetsiaalse klassi abil. Meetodi "Mouse.GetState" kasutamisel tagastatakse hiire praegune olek struktuuris "MouseState", nii et puuteasendi saate omadustest "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);
}
Üks asi, mida tuleb märkida hiireklassi kasutamise kohta puuteteabe saamiseks, on see, et see tagastab ainult lihtsa teabe. Ainsad piirangud teabele, mida saab hiireklassi kasutamisel, on "ainult ühe puudutusega", "puuteasend (MouseState.X, MouseState.Y omadus)" ja "kas puudutada või mitte (MouseState.LeftButton)". See ei toeta mitmikpuuteid ega žeste. Samuti, kui saate positsiooni, kui te pole seda puudutanud, jätkab see eelmise puuteasendi tagastamist. Kuna sisendteavet ei saa vastu võtta, kui seda ei puudutata, ei saa asukohateavet hankida, näiteks hiirekursorit hiirega.
Programm - tekstuuride joonistamine
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
// スプライトの描画準備
spriteBatch.Begin();
// タッチしている位置にテクスチャーを描画
spriteBatch.Draw(texture, touchPosition, Color.White);
// スプライトの一括描画
spriteBatch.End();
base.Draw(gameTime);
}
Valimi kokkuvõte
Kuna hiireklass asendab puutetundliku teabe omandamist, saab teavet ainult puutetundliku asendi saamisel nagu selles proovis. Ja vastupidi, kui kasutate ainult puutetundlikku klassi, saate lisateavet.
Seetõttu ei ole hiireklassi abil puutetundliku teabe saamine ilma teeneteta. Hiireklassi kasutamine pakub järgmisi eeliseid:
- Saab koodi jagada Windowsis töötavate hiiretoega mängudega
- Puutetundliku asukoha teavet saab kirjutada kõige väiksema koodihulgaga
- Mittevajaliku töötlemise võib ära jätta
Kui kasutate ainult ühe puudutusega ja ainult puutetundlikku positsioneerimist, saate ülaltoodud eeliseid ära kasutada, kasutades hiireklassi.