Kosketustoimintojen vuorovaikutus Windows Phone 7:n pelinkehityksessä Osa 1 Kosketusohjauksen perusteet
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.
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/).
- Windows Phone -kehittäjän työkalut
- Zune-ohjelmisto
- Oikea laite, jossa on Windows Phone 7 tai Windows 7:n monikosketusympäristö
- Windows Phone -kehittäjän rekisteröintisovellus
Kuva 2: Microsoft Visual Studio 2010 Express for Windows Phone (sisältyy Windows Phone Developer Toolsiin)
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.
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.
Kuva 6: .png Tekstuurin lisääminen sisältöprojektiin
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.