Interaksi sentuhan dalam pembangunan permainan untuk asas interaksi Windows Phone 7 Part 1 Touch
Bermula dengan Windows Phone 7
Platform Aplikasi Windows Phone 7
Persekitaran pembangunan Windows Phone 7 telah dikeluarkan secara rasmi pada September 2010, dan telefon pintar yang sebenarnya menjalankan Windows Phone 7 telah mula memasuki pasaran.
Rajah 1: Trofi HTC 7 dengan Windows Phone 7 dijual oleh HTC
Apabila anda mencipta aplikasi yang berjalan pada Windows Phone 7, anda boleh memilih antara "Silverlight" dan "XNA Framework" sebagai rangka kerja program. Secara umum, anda akan menggunakan "Rangka Kerja XNA" untuk pembangunan permainan dan "Silverlight" untuk aplikasi lain seperti alat.
Bahagian ini menggunakan Rangka Kerja XNA untuk pembangunan permainan dan menerangkan cara menggunakan panel sentuh, yang akan menjadi antara muka pengguna yang paling banyak digunakan untuk Windows Phone 7. Penggunaan mudah diterangkan dalam bantuan XNA Game Studio, jadi saya ingin menerangkannya dengan cara yang lebih mendalam di sini.
Sediakan persekitaran pembangunan anda
Bahagian ini adalah dari perspektif seseorang yang telah sedikit menyentuh XNA Game Studio, jadi saya akan meninggalkan arahan terperinci seperti pemasangan dan persediaan. Terdapat banyak maklumat dalam bantuan yang disertakan dengan XNA Game Studio dan di web, jadi sila lihat sendiri. Saya juga mempunyai beberapa di laman web saya (http://sorceryforce.com/xna/).
- Alat Pembangun Windows Phone
- Perisian Zune
- Peranti sebenar yang menjalankan Windows Phone 7 atau persekitaran berbilang sentuhan Windows 7
- Aplikasi Pendaftaran Pembangun Windows Phone
Rajah 2: Microsoft Visual Studio 2010 Express untuk Windows Phone (termasuk dalam Alat Pembangun Windows Phone)
Rajah 3: Emulator Windows Phone
Pengaturcaraan! - 1. Dapatkan maklumat sentuhan
Mengenai sampel ini
Versi Rangka Kerja XNA yang digunakan dalam Windows Phone 7 ialah "4.0", tetapi sehingga itu tiada kelas untuk panel sentuh, dan papan kekunci, tikus, dan pad permainan adalah arus perdana. Sejak 4.0, Windows Phone 7 telah disokong dan kelas baharu yang dikhaskan untuk panel sentuh telah ditambah.
Dalam artikel ini, kami akan menerangkan terutamanya kelas itu, tetapi sebenarnya, jika anda ingin mendapatkan maklumat kedudukan sentuh yang mudah, anda boleh menggantikan kelas lain tanpa menggunakan kelas untuk panel sentuh. Ia adalah kelas "Tetikus". Dalam sampel ini, kami akan menggunakan kelas Tetikus untuk mendapatkan maklumat sentuhan.
Matlamat program sampel ini
Apabila anda menyentuh skrin, imej (sprite) diletakkan mengikut kedudukan sentuh.
Rajah 3,4: Sprites muncul di kedudukan tersentuh
Program - Mengisytiharkan Bidang
Saya ingin menerangkannya bersama-sama dengan program sampel dengan segera. Penjelasan mengenai bahagian-bahagian yang tidak berkaitan secara langsung dengan operasi sentuhan dan program yang dibuat dari awal ditinggalkan, jadi sila rujuk kod sumber yang diedarkan secara berasingan.
public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
<summary>
テクスチャー
</summary>
Texture2D texture;
<summary>
タッチしている位置
</summary>
Vector2 touchPosition;
public Game1()
{
Medan ini mengisytiharkan tekstur untuk melukis di lokasi sentuhan dan pemboleh ubah struktur Vector2 untuk menyimpan kedudukan sentuhan.
Program - Memuatkan tekstur
Tekstur telah ditambah ke projek kandungan dan dimuatkan dengan kaedah LoadContent. Oleh kerana kandungannya tidak berkaitan secara langsung dengan panel sentuh, penjelasan terperinci ditinggalkan.
Rajah 6: Tambah Tekstur.png pada projek kandungan anda
Rajah 7: Imej yang digunakan dalam sampel ini
protected override void LoadContent()
{
// 新規の SpriteBatch を作成します。これはテクスチャーの描画に使用できます。
spriteBatch = new SpriteBatch(GraphicsDevice);
// テクスチャーをコンテンツパイプラインから読み込む
texture = Content.Load<Texture2D>("Texture");
}
Program - Pemerolehan Maklumat Sentuh
Maklumat sentuhan diambil dalam kaedah Game.Update.
Saya mendapat maklumat sentuhan menggunakan kelas "Tetikus" dan bukannya dari kelas khusus. Apabila menggunakan kaedah "Mouse.GetState", keadaan tetikus semasa dikembalikan dalam struktur "MouseState", jadi anda boleh mendapatkan kedudukan sentuhan dari sifat "MouseState.X" dan "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);
}
Satu perkara yang perlu diperhatikan tentang menggunakan kelas Tetikus untuk mendapatkan maklumat sentuhan ialah ia hanya mengembalikan maklumat mudah. Satu-satunya sekatan ke atas maklumat yang boleh diperolehi apabila menggunakan kelas Tetikus adalah "sentuhan tunggal sahaja", "kedudukan sentuh (MouseState.X, MouseState.Y property)", dan "sama ada untuk menyentuh (MouseState.LeftButton)". Ia tidak menyokong berbilang sentuhan atau gerak isyarat. Selain itu, jika anda mendapat kedudukan apabila anda tidak menyentuhnya, ia akan terus mengembalikan kedudukan sentuhan sebelumnya. Oleh kerana maklumat input tidak dapat diterima melainkan ia disentuh, maklumat lokasi tidak boleh diperoleh seperti mouseover oleh tetikus.
Program - Tekstur Lukisan
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
// スプライトの描画準備
spriteBatch.Begin();
// タッチしている位置にテクスチャーを描画
spriteBatch.Draw(texture, touchPosition, Color.White);
// スプライトの一括描画
spriteBatch.End();
base.Draw(gameTime);
}
Ringkasan sampel ini
Oleh kerana kelas Tetikus menggantikan pemerolehan maklumat sentuhan, maklumat hanya boleh diperolehi dengan mendapatkan kedudukan sentuhan seperti dalam sampel ini. Sebaliknya, jika anda menggunakan kelas sentuh sahaja, anda boleh mendapatkan lebih banyak maklumat.
Oleh itu, bukan tanpa merit untuk mendapatkan maklumat sentuhan menggunakan kelas Tetikus. Menggunakan kelas Tetikus memberikan faedah berikut:
- Boleh berkongsi kod dengan permainan didayakan tetikus yang berjalan pada Windows
- Maklumat lokasi sentuh boleh ditulis dengan jumlah kod yang paling sedikit
- Pemprosesan yang tidak perlu boleh ditinggalkan
Jika anda hanya menggunakan sentuhan tunggal dan hanya menyentuh kedudukan, anda boleh memanfaatkan faedah di atas dengan menggunakan kelas Tetikus.