Nozioni di base sull'interazione tramite tocco nello sviluppo di giochi per Windows Phone 7 Parte 1 Nozioni di base sull'interazione tramite tocco
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.
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/).
- Strumenti di sviluppo di Windows Phone
- Zune Software
- Un dispositivo reale che esegue Windows Phone 7 o un ambiente multi-touch Windows 7
- Applicazione di registrazione per sviluppatori Windows Phone
Figura 2: Microsoft Visual Studio 2010 Express per Windows Phone (incluso negli strumenti di sviluppo di 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.
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.
Figura 6: Aggiungere una texture.png al progetto di contenuto
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.