Αλληλεπίδραση αφής στην ανάπτυξη παιχνιδιών για Windows Phone 7 Μέρος 1 Βασικά στοιχεία αλληλεπίδρασης αφής

Σελίδα ενημέρωση :
Ημερομηνία δημιουργίας σελίδας :

Γρήγορα αποτελέσματα με το Windows Phone 7

Πλατφόρμα εφαρμογών του Windows Phone 7

Το περιβάλλον ανάπτυξης του Windows Phone 7 κυκλοφόρησε επίσημα τον Σεπτέμβριο του 2010 και τα smartphone που εκτελούν στην πραγματικότητα το 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 Εξπρές για Windows Phone (περιλαμβάνεται στα Εργαλεία προγραμματιστών του Windows Phone)

図 3 :Windows Phone エミュレーター
Φιγούρα 3: Εξομοιωτής τηλεφώνου των Windows

Προγραμματισμός! - 1. Λήψη πληροφοριών αφής

Πληροφορίες για αυτό το δείγμα

Η έκδοση του XNA Framework που χρησιμοποιείται στο Windows Phone 7 είναι "4.0", αλλά μέχρι τότε δεν υπήρχαν για πίνακες αφής και τα πληκτρολόγια, τα ποντίκια και τα gamepads ήταν το mainstream. Από την έκδοση 4.0, το Windows Phone 7 υποστηρίζεται και έχει προστεθεί μια νέα κατηγορία αφιερωμένη στις οθόνες αφής.

Σε αυτό το άρθρο, θα εξηγήσουμε κυρίως αυτή την τάξη, αλλά στην πραγματικότητα, αν θέλετε να λάβετε απλές πληροφορίες θέσης αφής, μπορείτε να αντικαταστήσετε μια άλλη τάξη χωρίς να χρησιμοποιήσετε μια κλάση για πίνακες αφής. Είναι η κατηγορία "Ποντίκι". Σε αυτό το δείγμα, θα χρησιμοποιήσουμε την κλάση Mouse για να λάβουμε πληροφορίες αφής.

Στόχοι αυτού του δείγματος προγράμματος

Όταν αγγίζεις την οθόνη, η εικόνα (αντικείμενο) τοποθετείται ανάλογα με τη θέση αφής.

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

Ένα πράγμα που πρέπει να σημειωθεί σχετικά με τη χρήση της κλάσης Mouse για τη λήψη πληροφοριών αφής είναι ότι επιστρέφει μόνο απλές πληροφορίες. Οι μόνοι περιορισμοί στις πληροφορίες που μπορούν να ληφθούν κατά τη χρήση της κλάσης "Ποντίκι" είναι "μόνο με ένα άγγιγμα", "θέση αφής (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);
}

Περίληψη του δείγματος

Δεδομένου ότι η κλάση Mouse υποκαθιστά την απόκτηση πληροφοριών αφής, οι πληροφορίες μπορούν να ληφθούν μόνο με την απόκτηση της θέσης αφής όπως σε αυτό το δείγμα. Αντίθετα, εάν χρησιμοποιείτε μια κλάση μόνο για αφή, μπορείτε να λάβετε περισσότερες πληροφορίες.

Επομένως, δεν είναι χωρίς αξία να λαμβάνετε πληροφορίες αφής χρησιμοποιώντας την κατηγορία Mouse. Η χρήση της κλάσης "Ποντίκι" παρέχει τα ακόλουθα πλεονεκτήματα:

  • Δυνατότητα κοινής χρήσης κώδικα με παιχνίδια με δυνατότητα ποντικιού που εκτελούνται στα Windows
  • Οι πληροφορίες τοποθεσίας αφής μπορούν να γραφτούν με τη μικρότερη ποσότητα κώδικα
  • Η περιττή επεξεργασία μπορεί να παραλειφθεί

Εάν χρησιμοποιείτε μόνο ένα άγγιγμα και μόνο τοποθέτηση αφής, μπορείτε να επωφεληθείτε από τα παραπάνω πλεονεκτήματα χρησιμοποιώντας την κατηγορία Mouse.