التفاعل باللمس في تطوير الألعاب ل Windows Phone 7 الجزء 1 أساسيات التفاعل باللمس

تحديث الصفحة :
تاريخ إنشاء الصفحة :

بدء استخدام Windows Phone 7

ويندوز فون 7 منصة التطبيق

تم إصدار بيئة تطوير Windows Phone 7 رسميا في سبتمبر 2010 ، وبدأت الهواتف الذكية التي تعمل بالفعل بنظام Windows Phone 7 في الوصول إلى السوق.

図 1 :HTC から販売されている Windows Phone 7 を搭載した「HTC 7 Trophy」
الشكل 1: HTC 7 Trophy مع Windows Phone 7 الذي تبيعه HTC

عند إنشاء تطبيق يعمل على Windows Phone 7 ، يمكنك الاختيار بين "Silverlight" و "XNA Framework" كإطار عمل للبرنامج. بشكل عام ، ستستخدم "XNA Framework" لتطوير الألعاب و "Silverlight" للتطبيقات الأخرى مثل الأدوات.

يستخدم هذا القسم إطار عمل XNA لتطوير الألعاب ويشرح كيفية استخدام لوحة اللمس، والتي ستكون واجهة المستخدم الأكثر استخداما لنظام التشغيل 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: مايكروسوفت فيسوال ستوديو 2010 اكسبرس لهاتف ويندوز (المدرجة في ويندوز فون أدوات المطورين)

図 3 :Windows Phone エミュレーター
الشكل 3: محاكي هاتف ويندوز

برمجة! - 1. الحصول على معلومات اللمس

حول هذا النموذج

إصدار XNA Framework المستخدم في 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
  • يمكن كتابة معلومات الموقع التي تعمل باللمس بأقل قدر من التعليمات البرمجية
  • يمكن حذف المعالجة غير الضرورية

إذا كنت تستخدم اللمس الواحد فقط وتحديد المواقع باللمس فقط، فيمكنك الاستفادة من المزايا المذكورة أعلاه باستخدام فئة الماوس.