Розробка програм для Windows Phone/Створення першої XNA програми для Windows Phone

Матеріал з Вікіпідручника

Глава розповідає, як створити першу просту XNA програму для Windows Phone 7, яка виводить текстове привітання в центрі екрану.

Відмінністю такої програми в порівнянні з прграмою Silverligt в тому, що XNA не має встроєних шрифтів. Silverlight використовує векторні TrueType шрифти тоді як XNA не має можливості працювати з такими шрифтами. В XNA, все що відображається на екрані це бітове зображення, у тому числі і шрифти.

Якщо ви бажаєте використовувати конкретний шрифт в програмі XNA, цей шрифт необхідно включити у виконуваний файл у вигляді колекції зображень кожної літери. Існують стандартні шрифти, які ви можете використовувати і вільно розповсюджувати в програмах XNA, такі як:

  • Kootenay
  • Lindsey
  • Miramonte
  • Miramonte Bold
  • Pescadero
  • Pescadero Bold
  • Pericles
  • Pericles Light
  • Segoe UI Mono
  • Segoe UI Mono Bold

Для створення проекту виконайте наступні дії File -> New -> Project. Далі у вікні Visual C# -> XNA Game Studio 4.0 -> Windows Phone Game (4.0). Виберіть каталог для збереження і назовіть свій проект XnaHelloPhone.

Visual Studio створить два проекти, один для самої програм а інший для її контенту і ресурсів.

Додайте шрифт до програми - зробіть правий клік на проекті контенту (який буде названий XnaHelloPhoneContent (Content) і з випадаючього списку виберіть Add -> New Item -> Sprite Font. Залиште назву файлу SpriteFont1.spritefont, і нажміть кнопку Add.

Слово “sprite” (вимовляється як спрайт) загальний термін при розробці ігор який зазвичай означає невелике бітове зображення, яке може рухатись по екрану.

В проект буде додано XML файл SpriteFont1.spritefont, який містить налаштування шрифту:

  • Тег Size - задає розмір шрифта у пікселях.
  • Секція CharacterRegions задає проміжок кодів символів у шістнадцятирічному форматі які вам необхідні в даній програмі. За замовчуванням він має значення від 0x32 до 0x126, які включає всі символи ASCII, крім спеціальних.

Основним файлом який ви будете використовувати для розробки простих невеликих ігор є файл проекту - Game1.cs. В ньому декларується клас Game1 наслідується від класу Game. Додайте до цього класу три нових властивості:

string text = "Hello, Windows Phone 7!"; 

SpriteFont segoe14;

Vector2 textPosition;


Для проботи програми вам необхідно завантажити і ініціалізувати шрифт, для таких цілей в классі Game1 існує метод LoadContent, який виконується при ініціалізації програми. Перша строка методу вже написана для вас, вона створює об'єкт spriteBatch який використовується для відображення спрайтів на екрані.

segoe14 = this.Content.Load<SpriteFont>("Segoe14");

Vector2 textSize = segoe14.MeasureString(text);

Viewport viewport = this.GraphicsDevice.Viewport;

textPosition = new Vector2((viewport.Width - textSize.X) / 2, (viewport.Height - textSize.Y) / 2);


Після закінчення фази ініціалізації, починається виконання програми, програма входить в ігровий цикл, який оновлює зображення на екрані зі швидкістю 30 кадрів в секунду. Послідовно визиваються два методи: Update потім Draw і так по колу.

Метод Draw ви використовуєте для того щоб відобразити щось на екрані. Якщо вам необхідно провести перед цим якісь підрахунки, слід використовувати метод * Update.


protected override void Draw(GameTime gameTime)
{
   GraphicsDevice.Clear(Color.Navy);
   spriteBatch.Begin();

   spriteBatch.DrawString(segoe14, text, textPosition, Color.White);

   spriteBatch.End();

   base.Draw(gameTime);
}


Спрайти відображаються на екрані якщо вони повьязані з обьектом SpriteBatch, який було створено під час виконання методу LoadContent. Між викликами методів Begin та End може бути декілька визовів таких як DrawString для відображення тексту і методи Draw для відображення зображень. В даному випадку методу DrawString передається посилання на завантажений шрифт, текст який необхідно відобразити, позиція тексту на екрані, яка задає верхній лівий угол, і колір.

Запустіть програму. За замовчуванням Silverlight програми відображаються в портретній орієнтації, а XNA програми у горизонтальній орієнтації. Якщо ви запустили програму на емуляторі ви можете змінити його орієнтацію.

Література[ред.]