विंडोज फोन 7 भाग 1 टच इंटरैक्शन मूल बातें के लिए खेल के विकास में टच इंटरैक्शन

पेज अद्यतन :
पेज निर्माण की तारीख :

विंडोज फोन 7 के साथ शुरू करें

विंडोज फोन 7 एप्लिकेशन प्लेटफ़ॉर्म

विंडोज फोन 7 विकास वातावरण आधिकारिक तौर पर सितंबर 2010 में जारी किया गया था, और वास्तव में विंडोज फोन 7 चलाने वाले स्मार्टफोन बाजार में आने लगे हैं।

図 1 :HTC から販売されている Windows Phone 7 を搭載した「HTC 7 Trophy」
चित्र 1: एचटीसी द्वारा बेचे गए विंडोज फोन 7 के साथ एचटीसी 7 ट्रॉफी

जब आप विंडोज फोन 7 पर चलने वाला एप्लिकेशन बनाते हैं, तो आप प्रोग्राम फ्रेमवर्क के रूप में "सिल्वरलाइट" और "एक्सएनए फ्रेमवर्क" के बीच चयन कर सकते हैं। सामान्य तौर पर, आप गेम डेवलपमेंट के लिए "एक्सएनए फ्रेमवर्क" और टूल जैसे अन्य अनुप्रयोगों के लिए "सिल्वरलाइट" का उपयोग करेंगे।

यह खंड गेम विकास के लिए एक्सएनए फ्रेमवर्क का उपयोग करता है और बताता है कि टच पैनल का उपयोग कैसे करें, जो विंडोज फोन 7 के लिए सबसे अधिक उपयोग किया जाने वाला उपयोगकर्ता इंटरफ़ेस होगा। सरल उपयोग एक्सएनए गेम स्टूडियो मदद में वर्णित है, इसलिए मैं इसे यहां थोड़ा और गहराई से समझाना चाहता हूं।

अपने विकास के माहौल को तैयार करें

यह अनुभाग किसी ऐसे व्यक्ति के परिप्रेक्ष्य से है जिसने एक्सएनए गेम स्टूडियो को थोड़ा सा छुआ है, इसलिए मैं स्थापना और सेटअप जैसे विस्तृत निर्देशों को छोड़ दूंगा। एक्सएनए गेम स्टूडियो और वेब पर आने वाली मदद में बहुत सारी जानकारी है, इसलिए कृपया इसे स्वयं देखें। मेरे पास मेरी साइट पर कुछ भी है (http://sorceryforce.com/xna/)।

図 2 :Microsoft Visual Studio 2010 Express for Windows Phone(Windows Phone Developer Tools に含まれます)
चित्र 2: विंडोज फोन के लिए माइक्रोसॉफ्ट विजुअल स्टूडियो 2010 एक्सप्रेस (विंडोज फोन डेवलपर टूल्स में शामिल)

図 3 :Windows Phone エミュレーター
चित्र 3: विंडोज फोन एमुलेटर

प्रोग्रामिंग! - 1. स्पर्श जानकारी प्राप्त करें

इस नमूने के बारे में

विंडोज फोन 7 में उपयोग किए जाने वाले एक्सएनए फ्रेमवर्क का संस्करण "4.0" है, लेकिन तब तक टच पैनल के लिए कोई कक्षाएं नहीं थीं, और कीबोर्ड, चूहे और गेमपैड मुख्यधारा थे। 4.0 के बाद से, विंडोज फोन 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()
  {

फ़ील्ड स्पर्श स्थान पर आकर्षित करने के लिए एक बनावट और स्पर्श स्थिति को संग्रहीत करने के लिए एक वेक्टर 2 संरचना चर घोषित करता है।

कार्यक्रम - बनावट लोड हो रहा है

बनावट पहले से ही सामग्री प्रोजेक्ट में जोड़े गए हैं और लोडकंटेंट विधि के साथ लोड किए गए हैं। चूंकि सामग्री सीधे स्पर्श पैनलों से संबंधित नहीं है, इसलिए विस्तृत स्पष्टीकरण छोड़ दिए जाते हैं।

図 6 :コンテンツプロジェクトに「Texture.png」を追加しておく
चित्रा 6: अपनी सामग्री परियोजना में एक बनावट.png जोड़ें

図 7 :今回サンプルで使用する画像
चित्रा 7: इस नमूने में उपयोग की जाने वाली छवि

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

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

कार्यक्रम - स्पर्श सूचना अधिग्रहण

स्पर्श जानकारी Game.अद्यतन विधि में पुनर्प्राप्त किया गया है।

मुझे समर्पित वर्ग के बजाय "माउस" वर्ग का उपयोग करके स्पर्श जानकारी मिल रही है। "माउस.गेटस्टेट" विधि का उपयोग करते समय, वर्तमान माउस स्थिति "माउसस्टेट" संरचना में वापस आ जाती है, ताकि आप "माउसस्टेट.एक्स" और "माउसस्टेट.वाई" गुणों से स्पर्श स्थिति प्राप्त कर सकें।

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);
}

स्पर्श जानकारी प्राप्त करने के लिए माउस वर्ग का उपयोग करने के बारे में ध्यान देने योग्य एक बात यह है कि यह केवल सरल जानकारी देता है। माउस वर्ग का उपयोग करते समय प्राप्त की जा सकने वाली जानकारी पर एकमात्र प्रतिबंध "केवल एकल स्पर्श", "स्पर्श स्थिति (माउसस्टेट.एक्स, माउसस्टेट.वाई संपत्ति)", और "स्पर्श करना है या नहीं (माउसस्टेट.लेफ्टबटन)"। यह मल्टी-टच या इशारों का समर्थन नहीं करता है। इसके अलावा, यदि आपको कोई स्थिति मिलती है जब आपने इसे छुआ नहीं है, तो यह पिछली स्पर्श स्थिति को वापस करना जारी रखेगा। चूंकि इनपुट जानकारी तब तक प्राप्त नहीं की जा सकती जब तक कि इसे छुआ न जाए, स्थान की जानकारी प्राप्त नहीं की जा सकती है जैसे कि माउस द्वारा माउसओवर।

कार्यक्रम - ड्राइंग बनावट

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

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

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

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

  base.Draw(gameTime);
}

इस नमूने का सारांश

चूंकि माउस वर्ग स्पर्श जानकारी के अधिग्रहण को प्रतिस्थापित करता है, इसलिए जानकारी केवल इस नमूने के रूप में स्पर्श स्थिति प्राप्त करके प्राप्त की जा सकती है। इसके विपरीत, यदि आप स्पर्श-केवल वर्ग का उपयोग करते हैं, तो आप अधिक जानकारी प्राप्त कर सकते हैं।

इसलिए, माउस वर्ग का उपयोग करके स्पर्श जानकारी प्राप्त करना योग्यता के बिना नहीं है। माउस वर्ग का उपयोग निम्न लाभ प्रदान करता है:

  • विंडोज पर चल रहे माउस-सक्षम गेम के साथ कोड साझा कर सकते हैं
  • टच स्थान जानकारी कोड की कम से कम राशि के साथ लिखा जा सकता है
  • अनावश्यक प्रसंस्करण को छोड़ा जा सकता है

यदि आप केवल एकल स्पर्श और केवल स्पर्श स्थिति का उपयोग करते हैं, तो आप माउस वर्ग का उपयोग करके उपरोक्त लाभों का लाभ उठा सकते हैं।