Interakcja dotykowa w tworzeniu gier dla systemu Windows Phone 7, część 1 Podstawowe informacje o interakcji dotykowej
Wprowadzenie do systemu Windows Phone 7
Platforma aplikacji systemu Windows Phone 7
Środowisko programistyczne Windows Phone 7 zostało oficjalnie wydane we wrześniu 2010 roku, a smartfony z systemem Windows Phone 7 zaczęły trafiać na rynek.
Rysunek 1: HTC 7 Trophy z Windows Phone 7 sprzedawane przez HTC
Podczas tworzenia aplikacji działającej w systemie Windows Phone 7 można wybrać między "Silverlight" i "XNA Framework" jako strukturą programu. Ogólnie rzecz biorąc, będziesz używać "XNA Framework" do tworzenia gier i "Silverlight" do innych aplikacji, takich jak narzędzia.
W tej sekcji użyto struktury XNA do tworzenia gier i wyjaśniono, jak korzystać z panelu dotykowego, który będzie najczęściej używanym interfejsem użytkownika dla systemu Windows Phone 7. Proste użycie jest opisane w pomocy XNA Game Studio, więc chciałbym wyjaśnić to w nieco bardziej szczegółowy sposób tutaj.
Przygotowywanie środowiska programistycznego
Ta sekcja jest z perspektywy kogoś, kto choć trochę dotknął XNA Game Studio, więc pominę szczegółowe instrukcje, takie jak instalacja i konfiguracja. W pomocy dołączonej do XNA Game Studio i w Internecie znajduje się wiele informacji, więc sprawdź to sam. Mam też kilka na mojej stronie (http://sorceryforce.com/xna/).
- Narzędzia deweloperskie systemu Windows Phone
- Oprogramowanie Zune
- Rzeczywiste urządzenie z systemem Windows Phone 7 lub środowiskiem wielodotykowym systemu Windows 7
- Aplikacja do rejestracji deweloperów systemu Windows Phone
Rysunek 2: Program Microsoft Visual Studio 2010 Express dla systemu Windows Phone (dołączony do narzędzi deweloperskich systemu Windows Phone)
Rysunek 3: Emulator systemu Windows Phone
Programowanie! - 1. Uzyskiwanie informacji o dotyku
Informacje o tej próbce
Wersja XNA Framework używana w Windows Phone 7 to "4.0", ale do tego czasu nie było klas dla paneli dotykowych, a klawiatury, myszy i gamepady były głównym nurtem. Od wersji 4.0 obsługiwany jest Windows Phone 7 i dodano nową klasę dedykowaną panelom dotykowym.
W tym artykule wyjaśnimy głównie tę klasę, ale w rzeczywistości, jeśli chcesz uzyskać proste informacje o pozycji dotykowej, możesz zastąpić inną klasę bez używania klasy dla paneli dotykowych. Jest to klasa "Mysz". W tym przykładzie użyjemy klasy Mouse, aby uzyskać informacje dotykowe.
Cele tego przykładowego programu
Po dotknięciu ekranu obraz (duszek) jest umieszczany zgodnie z pozycją dotyku.
Rysunek 3,4: Sprite'y pojawiają się w dotykowych pozycjach
Program - Deklarowanie pól
Chciałbym to od razu wyjaśnić wraz z przykładowym programem. Wyjaśnienia części, które nie są bezpośrednio związane z obsługą dotykową oraz programów tworzonych od początku zostały pominięte, dlatego prosimy o zapoznanie się z kodem źródłowym dystrybuowanym osobno.
public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
<summary>
テクスチャー
</summary>
Texture2D texture;
<summary>
タッチしている位置
</summary>
Vector2 touchPosition;
public Game1()
{
Pole deklaruje teksturę do narysowania w miejscu dotyku oraz zmienną struktury Vector2 do przechowywania pozycji dotyku.
Program - Ładowanie tekstur
Tekstury są już dodawane do projektu zawartości i ładowane za pomocą metody LoadContent. Ponieważ treść nie jest bezpośrednio związana z panelami dotykowymi, szczegółowe wyjaśnienia są pomijane.
Rysunek 6: Dodawanie tekstury.png do projektu zawartości
Rysunek 7: Obraz użyty w tym przykładzie
protected override void LoadContent()
{
// 新規の SpriteBatch を作成します。これはテクスチャーの描画に使用できます。
spriteBatch = new SpriteBatch(GraphicsDevice);
// テクスチャーをコンテンツパイプラインから読み込む
texture = Content.Load<Texture2D>("Texture");
}
Program - Touch Information Acquisition
Informacje o dotyku są pobierane w metodzie Game.Update.
Otrzymuję informacje o dotyku za pomocą klasy "Mouse" zamiast z dedykowanej klasy. Podczas korzystania z metody "Mouse.GetState" bieżący stan myszy jest zwracany w strukturze "MouseState", dzięki czemu można uzyskać pozycję dotykową z właściwości "MouseState.X" i "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);
}
Jedną z rzeczy, na które należy zwrócić uwagę podczas korzystania z klasy Mouse w celu uzyskania informacji dotykowych, jest to, że zwraca ona tylko proste informacje. Jedynymi ograniczeniami dotyczącymi informacji, które można uzyskać podczas korzystania z klasy Mouse, są "tylko pojedyncze dotknięcie", "pozycja dotyku (właściwość MouseState.X, MouseState.Y)" i "czy dotykać (MouseState.LeftButton)". Nie obsługuje wielodotyku ani gestów. Ponadto, jeśli otrzymasz pozycję, gdy jej nie dotkniesz, będzie ona nadal zwracać poprzednią pozycję dotykową. Ponieważ informacje wejściowe nie mogą być odbierane, dopóki nie zostaną dotknięte, nie można uzyskać informacji o lokalizacji, takich jak najechanie myszą myszą.
Program - Rysowanie tekstur
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
// スプライトの描画準備
spriteBatch.Begin();
// タッチしている位置にテクスチャーを描画
spriteBatch.Draw(texture, touchPosition, Color.White);
// スプライトの一括描画
spriteBatch.End();
base.Draw(gameTime);
}
Podsumowanie tej próbki
Ponieważ klasa Mouse zastępuje pozyskiwanie informacji dotykowych, informacje można uzyskać tylko przez uzyskanie pozycji dotyku, jak w tym przykładzie. I odwrotnie, jeśli używasz klasy tylko dotykowej, możesz uzyskać więcej informacji.
Dlatego nie jest bezzasadne, aby uzyskać informacje dotykowe za pomocą klasy Mouse. Korzystanie z klasy Mouse zapewnia następujące korzyści:
- Może udostępniać kod w grach obsługujących mysz uruchomionych w systemie Windows
- Informacje o lokalizacji dotyku można zapisać przy użyciu najmniejszej ilości kodu
- Niepotrzebne przetwarzanie można pominąć
Jeśli używasz tylko pojedynczego dotknięcia i tylko pozycjonowania dotykowego, możesz skorzystać z powyższych korzyści, korzystając z klasy myszy.