אינטראקציית מגע בפיתוח משחקים עבור Windows Phone 7 חלק 1 יסודות אינטראקציית מגע

עודכן דף :
תאריך יצירת דף :

תחילת העבודה עם Windows Phone 7

פלטפורמת היישומים של Windows Phone 7

סביבת הפיתוח של Windows Phone 7 שוחררה רשמית בספטמבר 2010, וסמארטפונים שלמעשה מריצים את Windows Phone 7 החלו לצאת לשוק.

図 1 :HTC から販売されている Windows Phone 7 を搭載した「HTC 7 Trophy」
איור 1: פרס HTC 7 עם Windows Phone 7 שנמכר על-ידי HTC

בעת יצירת יישום הפועל ב- Windows Phone 7, באפשרותך לבחור בין "Silverlight" ו- "XNA Framework" כמסגרת התוכנית. באופן כללי, תשתמש "XNA Framework" לפיתוח משחקים ו "Silverlight" עבור יישומים אחרים כגון כלים.

סעיף זה משתמש ב- XNA Framework לפיתוח משחקים ומסביר כיצד להשתמש בלוח המגע, שיהיה ממשק המשתמש הנפוץ ביותר עבור Windows Phone 7. השימוש הפשוט מתואר בעזרה של XNA Game Studio, אז אני רוצה להסביר את זה בצורה קצת יותר מעמיקה כאן.

הכן את סביבת הפיתוח שלך

סעיף זה הוא מנקודת המבט של מישהו שיש לו אפילו נגע מעט XNA Game Studio, אז אני אשמיט הוראות מפורטות כגון התקנה והתקנה. יש הרבה מידע בעזרה שמגיעה עם XNA Game Studio ובאינטרנט, אז בבקשה לבדוק את זה בעצמך. יש לי גם כמה באתר שלי (http://sorceryforce.com/xna/).

図 2 :Microsoft Visual Studio 2010 Express for Windows Phone(Windows Phone Developer Tools に含まれます)
איור 2: Microsoft Visual Studio 2010 Express עבור Windows Phone (כלול בכלי המפתחים של Windows Phone)

図 3 :Windows Phone エミュレーター
איור 3: אמולטור של ווינדוס פון

תכנות! - 1. קבלת מידע על מגע

אודות מדגם זה

הגירסה של מסגרת XNA המשמשת ב- Windows Phone 7 היא "4.0", אך עד אז לא היו שיעורים ללוחות מגע, ומקלדות, עכברים ומשטחי משחק היו הזרם המרכזי. מאז 4.0, Windows Phone 7 נתמך, ומחלקה חדשה המוקדשת ללוחות מגע נוספה.

במאמר זה, נסביר בעיקר כי הכיתה, אבל למעשה, אם אתה רוצה לקבל מידע פשוט על מיקום מגע, אתה יכול להחליף כיתה אחרת מבלי להשתמש בכיתה עבור לוחות מגע. זוהי כיתת "עכבר". בדוגמה זו, נשתמש במחלקה 'עכבר' כדי לקבל מידע מגע.

מטרות התוכנית לדוגמה

בעת נגיעה במסך, התמונה (ספרייט) ממוקמת בהתאם למצב המגע.

図 3,4 :タッチした位置にスプライトが表示される 図 3,4 :タッチした位置にスプライトが表示される
איור 3,4: שדונים מופיעים בתנוחות שנגעו בהן

תכנית - הכרזה על שדות

אני רוצה להסביר את זה יחד עם התוכנית לדוגמה מיד. הסברים על חלקים שאינם קשורים ישירות לפעולת מגע ותוכניות שנוצרו מההתחלה מושמטים, לכן עיין בקוד המקור המופץ בנפרד.

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

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

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

  public Game1()
  {

השדה מצהיר על מרקם לציור במיקום המגע ועל משתנה מבנה Vector2 לאחסון מיקום המגע.

תוכנית - טעינת טקסטורות

מרקמים כבר נוספו לפרויקט התוכן ונטענו בפעולת השירות LoadContent. מכיוון שהתוכן אינו קשור ישירות ללוחות מגע, הסברים מפורטים מושמטים.

図 6 :コンテンツプロジェクトに「Texture.png」を追加しておく
איור 6: הוספת מרקם.png לפרוייקט התוכן שלך

図 7 :今回サンプルで使用する画像
איור 7: תמונה המשמשת בדוגמה זו

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

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

תוכנית - רכישת מידע מגע

פרטי המגע מאוחזרים בפעולת השירות Game.Update.

אני מקבל את פרטי המגע באמצעות כיתת "עכבר" במקום מכיתה ייעודית. בעת שימוש בשיטה "Mouse.GetState", מצב העכבר הנוכחי מוחזר במבנה "MouseState", כך שתוכל לקבל את מיקום המגע מהמאפיינים "MouseState.X" ו- "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);
}

דבר אחד שיש לציין לגבי השימוש במחלקה 'עכבר' לקבלת מידע מגע הוא שהיא מחזירה רק מידע פשוט. ההגבלות היחידות על מידע שניתן להשיג בעת שימוש במחלקה 'עכבר' הן "מגע יחיד בלבד", "מיקום מגע (MouseState.X, מאפיין MouseState.Y)", ו"אם לגעת או לא (MouseState.LeftButton)". הוא אינו תומך במולטי-טאץ' או במחוות. כמו כן, אם אתה מקבל תנוחה כשלא נגעת בה, היא תמשיך להחזיר את תנוחת המגע הקודמת. מכיוון שלא ניתן לקבל מידע קלט אלא אם כן נוגעים בו, לא ניתן לרכוש פרטי מיקום כגון מעבר עכבר באמצעות עכבר.

תוכנית - ציור טקסטורות

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

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

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

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

  base.Draw(gameTime);
}

סיכום מדגם זה

מכיוון שמחלקת העכבר מחליפה את רכישת מידע המגע, ניתן להשיג מידע רק על-ידי השגת מיקום המגע כמו במדגם זה. לעומת זאת, אם אתה משתמש בכיתה למגע בלבד, תוכל לקבל מידע נוסף.

לכן, זה לא בלי זכות לקבל מידע מגע באמצעות הכיתה עכבר. השימוש במחלקה 'עכבר' מספק את היתרונות הבאים:

  • יכול לשתף קוד עם משחקים המותאמים לשימוש בעכבר הפועלים ב- Windows
  • ניתן לכתוב פרטי מיקום מגע עם כמות הקוד הקטנה ביותר
  • עיבוד מיותר יכול להיות מושמט

אם אתה משתמש רק במגע יחיד ובמיקום מגע בלבד, באפשרותך לנצל את היתרונות שלעיל על-ידי שימוש במחלקה 'עכבר'.