Nozioni di base sull'interazione tramite tocco nello sviluppo di giochi per Windows Phone 7 Parte 1 Nozioni di base sull'interazione tramite tocco

Pagina aggiornata :
Data di creazione della pagina :

Introduzione a Windows Phone 7

Piattaforma applicativa Windows Phone 7

L'ambiente di sviluppo di Windows Phone 7 è stato ufficialmente rilasciato nel settembre 2010 e gli smartphone che eseguono effettivamente Windows Phone 7 hanno iniziato a colpire il mercato.

図 1 :HTC から販売されている Windows Phone 7 を搭載した「HTC 7 Trophy」
Figura 1: HTC 7 Trophy con Windows Phone 7 venduto da HTC

Quando si crea un'applicazione eseguibile in Windows Phone 7, è possibile scegliere tra "Silverlight" e "XNA Framework" come framework del programma. In generale, si utilizzerà "XNA Framework" per lo sviluppo di giochi e "Silverlight" per altre applicazioni, ad esempio strumenti.

In questa sezione viene utilizzato XNA Framework per lo sviluppo di giochi e viene illustrato come utilizzare il pannello virtuale, che sarà l'interfaccia utente più utilizzata per Windows Phone 7. Il semplice utilizzo è descritto nella guida di XNA Game Studio, quindi vorrei spiegarlo in modo leggermente più approfondito qui.

Preparare l'ambiente di sviluppo

Questa sezione è dal punto di vista di qualcuno che ha anche solo leggermente toccato XNA Game Studio, quindi ometterò istruzioni dettagliate come l'installazione e la configurazione. Sono disponibili molte informazioni nella Guida fornita con XNA Game Studio e sul Web, quindi dai un'occhiata tu stesso. Ne ho anche alcuni sul mio sito (http://sorceryforce.com/xna/).

図 2 :Microsoft Visual Studio 2010 Express for Windows Phone(Windows Phone Developer Tools に含まれます)
Figura 2: Microsoft Visual Studio 2010 Express per Windows Phone (incluso negli strumenti di sviluppo di Windows Phone)

図 3 :Windows Phone エミュレーター
Figura 3: emulatore di Windows Phone

Programmazione! - 1. Ottenere informazioni sul tocco

Informazioni su questo esempio

La versione di XNA Framework utilizzata in Windows Phone 7 è "4.0", ma fino ad allora non esistevano classi per i touch panel e tastiere, mouse e gamepad erano il mainstream. Dalla versione 4.0 è supportato Windows Phone 7 ed è stata aggiunta una nuova classe dedicata ai touch panel.

In questo articolo, spiegheremo principalmente quella classe, ma in realtà, se si desidera ottenere semplici informazioni sulla posizione del tocco, è possibile sostituire un'altra classe senza utilizzare una classe per i pannelli a sfioramento. È la classe "Mouse". In questo esempio verrà utilizzata la classe Mouse per ottenere informazioni sul tocco.

Obiettivi di questo programma di esempio

Quando si tocca lo schermo, l'immagine (sprite) viene posizionata in base alla posizione del tocco.

図 3,4 :タッチした位置にスプライトが表示される 図 3,4 :タッチした位置にスプライトが表示される
Figura 3,4: Gli sprite appaiono nelle posizioni toccate

Programma - Dichiarazione dei campi

Vorrei spiegarlo subito insieme al programma di esempio. Le spiegazioni delle parti che non sono direttamente correlate al funzionamento touch e dei programmi creati fin dall'inizio vengono omesse, quindi si prega di fare riferimento al codice sorgente distribuito separatamente.

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

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

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

  public Game1()
  {

Il campo dichiara una texture da disegnare nella posizione del tocco e una variabile struttura Vector2 per memorizzare la posizione del tocco.

Programma - Caricamento texture

Le trame vengono già aggiunte al progetto di contenuto e caricate con il metodo LoadContent. Poiché il contenuto non è direttamente correlato ai pannelli a sfioramento, vengono omesse spiegazioni dettagliate.

図 6 :コンテンツプロジェクトに「Texture.png」を追加しておく
Figura 6: Aggiungere una texture.png al progetto di contenuto

図 7 :今回サンプルで使用する画像
Figura 7: Immagine utilizzata in questo esempio

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

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

Programma - Touch Information Acquisition

Le informazioni sul tocco vengono recuperate nel metodo Game.Update.

Sto ricevendo le informazioni sul tocco usando la classe "Mouse" anziché da una classe dedicata. Quando si utilizza il metodo "Mouse.GetState", lo stato corrente del mouse viene restituito nella struttura "MouseState", in modo da poter ottenere la posizione del tocco dalle proprietà "MouseState.X" e "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);
}

Un aspetto da tenere presente sull'utilizzo della classe Mouse per ottenere informazioni sul tocco è che restituisce solo informazioni semplici. Le uniche restrizioni sulle informazioni che è possibile ottenere quando si utilizza la classe Mouse sono "solo tocco singolo", "posizione tocco (proprietà MouseState.X, MouseState.Y)" e "se toccare o meno (MouseState.LeftButton)". Non supporta il multi-touch o i gesti. Inoltre, se ottieni una posizione quando non l'hai toccata, continuerà a restituire la posizione di tocco precedente. Poiché le informazioni di input non possono essere ricevute a meno che non vengano toccate, le informazioni sulla posizione non possono essere acquisite come il passaggio del mouse tramite mouse.

Programma - Disegno di texture

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

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

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

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

  base.Draw(gameTime);
}

Riepilogo di questo esempio

Poiché la classe Mouse sostituisce l'acquisizione delle informazioni sul tocco, le informazioni possono essere ottenute solo ottenendo la posizione del tocco come in questo esempio. Al contrario, se si utilizza una classe di solo tocco, è possibile ottenere ulteriori informazioni.

Pertanto, non è privo di merito ottenere informazioni sul tocco utilizzando la classe Mouse. L'utilizzo della classe Mouse offre i vantaggi seguenti:

  • Può condividere codice con giochi abilitati per il mouse in esecuzione su Windows
  • Le informazioni sulla posizione del tocco possono essere scritte con la minima quantità di codice
  • L'elaborazione non necessaria può essere omessa

Se si utilizza solo il tocco singolo e il posizionamento solo tocco, è possibile sfruttare i vantaggi sopra indicati utilizzando la classe Mouse.